diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 000000000..6686ce759 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,57 @@ +name: CI + +on: + push: + branches: + - main + pull_request: + +jobs: + tests: + name: Python ${{ matrix.python-version }} + runs-on: ubuntu-20.04 + + strategy: + matrix: + python-version: + - '3.6' + - '3.7' + - '3.8' + - '3.9' + + steps: + - uses: actions/checkout@v2 + + - uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + + - uses: actions/cache@v2 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('requirements/*.txt') }} + restore-keys: | + ${{ runner.os }}-pip- + + - name: Upgrade packaging tools + run: python -m pip install --upgrade pip setuptools virtualenv wheel + + - name: Install dependencies + run: python -m pip install --upgrade codecov tox + + - name: Run tox targets for ${{ matrix.python-version }} + run: | + ENV_PREFIX=$(tr -C -d "0-9" <<< "${{ matrix.python-version }}") + TOXENV=$(tox --listenvs | grep "^py$ENV_PREFIX" | tr '\n' ',') tox + + - name: Run extra tox targets + if: ${{ matrix.python-version == '3.9' }} + run: | + python setup.py bdist_wheel + rm -r djangorestframework.egg-info # see #6139 + tox -e base,dist,docs + tox -e dist --installpkg ./dist/djangorestframework-*.whl + + - name: Upload coverage + run: | + codecov -e TOXENV,DJANGO diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 244ab77fa..000000000 --- a/.travis.yml +++ /dev/null @@ -1,55 +0,0 @@ -language: python -cache: pip -dist: bionic -matrix: - fast_finish: true - include: - - - { python: "3.5", env: DJANGO=2.2 } - - - { python: "3.6", env: DJANGO=2.2 } - - { python: "3.6", env: DJANGO=3.0 } - - { python: "3.6", env: DJANGO=3.1 } - - { python: "3.6", env: DJANGO=3.2 } - - - { python: "3.7", env: DJANGO=2.2 } - - { python: "3.7", env: DJANGO=3.0 } - - { python: "3.7", env: DJANGO=3.1 } - - { python: "3.7", env: DJANGO=3.2 } - - - { python: "3.8", env: DJANGO=3.0 } - - { python: "3.8", env: DJANGO=3.1 } - - { python: "3.8", env: DJANGO=3.2 } - - { python: "3.8", env: DJANGO=main } - - - { python: "3.9", env: DJANGO=3.1 } - - { python: "3.9", env: DJANGO=3.2 } - - { python: "3.9", env: DJANGO=main } - - - { python: "3.8", env: TOXENV=base } - - { python: "3.8", env: TOXENV=docs } - - - python: "3.8" - env: TOXENV=dist - script: - - python setup.py bdist_wheel - - rm -r djangorestframework.egg-info # see #6139 - - tox --installpkg ./dist/djangorestframework-*.whl - - tox # test sdist - - allow_failures: - - env: DJANGO=main - - env: DJANGO=3.2 - -install: - - pip install tox tox-travis - -script: - - tox - -after_success: - - pip install codecov - - codecov -e TOXENV,DJANGO - -notifications: - email: false diff --git a/tox.ini b/tox.ini index fc44b52d2..bf4de90d0 100644 --- a/tox.ini +++ b/tox.ini @@ -49,3 +49,21 @@ commands = mkdocs build deps = -rrequirements/requirements-testing.txt -rrequirements/requirements-documentation.txt + +[testenv:py36-django32] +ignore_outcome = true + +[testenv:py37-django32] +ignore_outcome = true + +[testenv:py38-django32] +ignore_outcome = true + +[testenv:py39-django32] +ignore_outcome = true + +[testenv:py38-djangomain] +ignore_outcome = true + +[testenv:py39-djangomain] +ignore_outcome = true