DO NOT MERGE: chore: streamline CI with UV and tox-gh-actions #2022
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |