From 475bfc435f252bee405d7b96830dae1450fc8758 Mon Sep 17 00:00:00 2001 From: "Terence D. Honles" Date: Tue, 6 Apr 2021 18:57:27 -0700 Subject: [PATCH] adjust GitHub actions to test Django versions --- .github/workflows/main.yml | 59 +++++++++++++++++++++++++++----------- tox.ini | 12 ++++++-- 2 files changed, 53 insertions(+), 18 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6686ce759..c00975bab 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -8,17 +8,36 @@ on: jobs: tests: - name: Python ${{ matrix.python-version }} + name: Python ${{ matrix.python-version }}, Django ${{ matrix.django-version }} runs-on: ubuntu-20.04 strategy: + fail-fast: false matrix: + django-version: + - '3.1' + - '3.2' python-version: - '3.6' - '3.7' - '3.8' - '3.9' + include: + # Old Django LTS only on older Pythons + - django-version: '2.2' + python-version: '3.6' + + - django-version: '2.2' + python-version: '3.7' + + # Pre-release Django only on new Pythons + - django-version: 'main' + python-version: '3.8' + + - django-version: 'main' + python-version: '3.9' + steps: - uses: actions/checkout@v2 @@ -33,25 +52,33 @@ jobs: 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 + python -m pip install --upgrade pip setuptools virtualenv wheel + python -m pip install --upgrade codecov tox tox-gh-actions - - name: Run extra tox targets - if: ${{ matrix.python-version == '3.9' }} + - name: Run tox 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 + TOX_EXIT=0 + tox || TOX_EXIT=$? + + if [[ $DJANGO == '3.2' && ${{ matrix.python-version }} == '3.9' ]]; then + # Run extra tox targets + # This would not be needed after https://github.com/ymyzk/tox-gh-actions/pull/60 + tox -e base,dist,docs + TOX_EXTRA_EXIT=$? + + if [[ $TOX_EXIT == 0 ]]; then + TOX_EXIT=$TOX_EXTRA_EXIT + fi + fi + + exit $TOX_EXIT + env: + DJANGO: ${{ matrix.django-version }} - name: Upload coverage run: | - codecov -e TOXENV,DJANGO + codecov -e DJANGO + env: + DJANGO: ${{ matrix.django-version }} diff --git a/tox.ini b/tox.ini index bf4de90d0..f7a32acdf 100644 --- a/tox.ini +++ b/tox.ini @@ -7,10 +7,18 @@ envlist = {py38,py39}-djangomain, base,dist,docs, -[travis:env] +[gh-actions] +python = + 3.6: py36 + 3.7: py37 + 3.8: py38 + 3.9: py39 + # This needs https://github.com/ymyzk/tox-gh-actions/pull/60 + # 3.9: py39,base,dist,docs + +[gh-actions:env] DJANGO = 2.2: django22 - 3.0: django30 3.1: django31 3.2: django32 main: djangomain