Skip to content

DO NOT MERGE: chore: streamline CI with UV and tox-gh-actions #2022

DO NOT MERGE: chore: streamline CI with UV and tox-gh-actions

DO NOT MERGE: chore: streamline CI with UV and tox-gh-actions #2022

Workflow file for this run

name: Test
on: [push, pull_request]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
test-package:
name: Test Package (Python ${{ matrix.python.version }}, Django ${{ matrix.django.version }})
runs-on: ubuntu-latest
permissions:
id-token: write # Required for Codecov OIDC token
strategy:
fail-fast: false
matrix:
# needs to included every supported python version
python:
- { version: '3.10', toxenv: 'py310' }
- { version: '3.11', toxenv: 'py311' }
- { version: '3.12', toxenv: 'py312' }
- { version: '3.13', toxenv: 'py313' }
django:
- {version: '4.2', toxenv: 'dj42'}
- {version: '5.0', toxenv: 'dj50'}
- {version: '5.1', toxenv: 'dj51'}
- {version: '5.2', toxenv: 'dj52'}
- {version: 'main', toxenv: 'djmain'}
include:
# https://docs.djangoproject.com/en/dev/faq/install/#what-python-can-i-use-with-django
- python: { version: '3.8', toxenv: 'py38' }
django: { version: '4.2', toxenv: 'dj42' }
- python: { version: '3.9', toxenv: 'py39' }
django: { version: '4.2', toxenv: 'dj42' }
- python: { version: '3.14', toxenv: 'py314' }
django: { version: '5.2', toxenv: 'dj52' }
- python: { version: '3.14', toxenv: 'py314' }
django: { version: 'main', toxenv: 'djmain' }
exclude:
- python: { version: '3.13', toxenv: 'py313' }
django: { version: '5.0', toxenv: 'dj50' }
- python: { version: '3.13', toxenv: 'py313' }
django: { version: '4.2', toxenv: 'dj42' }
- python: { version: '3.10', toxenv: 'py310' }
django: { version: 'main', toxenv: 'djmain' }
- python: { version: '3.11', toxenv: 'py311' }
django: { version: 'main', toxenv: 'djmain' }
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python.version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python.version }}
- name: Install uv
uses: hynek/setup-cached-uv@v2
- name: 🧪 Run tox targets for Python ${{ matrix.python.version }}, Django ${{ matrix.django.version }}
# we are not using tox-gh-actions to run our tests because it runs the tests for the django versions
# in sequence rather than in parallel, which slows down the test suite significantly. We use the matrix
# feature of GitHub Actions to run the tests in parallel instead.
run: uvx --with tox-uv tox -v -e ${{ matrix.python.toxenv }}-${{ matrix.django.toxenv }}
- name: Upload coverage
uses: codecov/codecov-action@v5
with:
name: Python ${{ matrix.python.version }}, Django ${{ matrix.django.version }}
use_oidc: true
test-demo-rp:
name: Test Demo Relying Party
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node-version:
- "22.x"
- "24.x"
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up NodeJS
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: npm install
working-directory: tests/app/rp
- name: Run Lint
run: npm run lint
working-directory: tests/app/rp
- name: Run build
run: npm run build
working-directory: tests/app/rp
success:
needs:
- test-package
- test-demo-rp
runs-on: ubuntu-latest
name: Test successful
steps:
- name: Success
run: echo Test successful