Update devcontainer #411
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
| # Run static analysis, tests, and sync | |
| name: "ci" | |
| concurrency: | |
| group: "${{ github.workflow }}-${{ github.ref }}" | |
| cancel-in-progress: True | |
| on: | |
| workflow_dispatch: | |
| pull_request: | |
| push: | |
| branches: ["main"] | |
| defaults: | |
| run: | |
| shell: "pwsh" | |
| env: | |
| UV_CACHE_DIR: "../uv-cache" | |
| UV_SYSTEM_PYTHON: "true" | |
| jobs: | |
| sync: | |
| strategy: | |
| matrix: | |
| runner: ["ubuntu-22.04"] | |
| python: ["3.11"] | |
| runs-on: "${{ matrix.runner }}" | |
| steps: | |
| - uses: "actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332" # v4.1.7 | |
| with: | |
| submodules: True | |
| - uses: "actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f" # v5.1.1 | |
| with: | |
| python-version: "${{ matrix.python }}" | |
| - run: "scripts/Sync-Py.ps1" | |
| - uses: "actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b" # v4.3.4 | |
| with: | |
| name: "lock" | |
| path: "lock.json" | |
| - uses: "actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9" # v4.0.2 | |
| with: | |
| path: "${{ env.UV_CACHE_DIR }}" | |
| key: "uv-${{ matrix.runner }}-${{ matrix.python }}-${{ hashFiles('lock.json') }}" | |
| build-docs: | |
| needs: "sync" | |
| strategy: | |
| matrix: | |
| runner: ["ubuntu-22.04"] | |
| python: ["3.11"] | |
| runs-on: "${{ matrix.runner }}" | |
| steps: | |
| - uses: "actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332" # v4.1.7 | |
| with: | |
| submodules: True | |
| - uses: "actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16" # v4.1.8 | |
| with: | |
| name: "lock" | |
| - uses: "actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9" # v4.0.2 | |
| with: | |
| path: "${{ env.UV_CACHE_DIR }}" | |
| key: "uv-${{ matrix.runner }}-${{ matrix.python }}-${{ hashFiles('lock.json') }}" | |
| - uses: "actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f" # v5.1.1 | |
| with: | |
| python-version: "${{ matrix.python }}" | |
| - run: "scripts/Sync-Py.ps1" | |
| - run: "sphinx-build -EaT docs _site" | |
| - uses: "actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa" # v3.0.1 | |
| deploy-docs: | |
| if: github.event_name != 'pull_request' | |
| needs: "build-docs" | |
| permissions: | |
| pages: "write" | |
| id-token: "write" | |
| strategy: | |
| matrix: | |
| runner: ["ubuntu-22.04"] | |
| python: ["3.11"] | |
| environment: | |
| name: "github-pages" | |
| url: "${{ steps.deployment.outputs.page_url }}" | |
| runs-on: "${{ matrix.runner }}" | |
| steps: | |
| - id: "deployment" | |
| uses: "actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e" # v4.0.5 | |
| ruff: | |
| needs: "sync" | |
| strategy: | |
| matrix: | |
| runner: ["ubuntu-22.04"] | |
| python: ["3.11"] | |
| runs-on: "${{ matrix.runner }}" | |
| steps: | |
| - uses: "actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332" # v4.1.7 | |
| with: | |
| submodules: True | |
| - uses: "actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16" # v4.1.8 | |
| with: | |
| name: "lock" | |
| - uses: "actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9" # v4.0.2 | |
| with: | |
| path: "${{ env.UV_CACHE_DIR }}" | |
| key: "uv-${{ matrix.runner }}-${{ matrix.python }}-${{ hashFiles('lock.json') }}" | |
| - uses: "actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f" # v5.1.1 | |
| with: | |
| python-version: "${{ matrix.python }}" | |
| - run: "scripts/Sync-Py.ps1" | |
| - run: "ruff check --no-fix --output-format github ." | |
| fawltydeps: | |
| needs: "sync" | |
| strategy: | |
| matrix: | |
| runner: ["ubuntu-22.04"] | |
| python: ["3.11"] | |
| runs-on: "${{ matrix.runner }}" | |
| steps: | |
| - uses: "actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332" # v4.1.7 | |
| with: | |
| submodules: True | |
| - uses: "actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16" # v4.1.8 | |
| with: | |
| name: "lock" | |
| - uses: "actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9" # v4.0.2 | |
| with: | |
| path: "${{ env.UV_CACHE_DIR }}" | |
| key: "uv-${{ matrix.runner }}-${{ matrix.python }}-${{ hashFiles('lock.json') }}" | |
| - uses: "actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f" # v5.1.1 | |
| with: | |
| python-version: "${{ matrix.python }}" | |
| - run: "scripts/Sync-Py.ps1" | |
| - run: "fawltydeps" | |
| pyright: | |
| needs: "sync" | |
| strategy: | |
| matrix: | |
| runner: ["ubuntu-22.04"] | |
| python: ["3.11"] | |
| runs-on: "${{ matrix.runner }}" | |
| steps: | |
| - uses: "actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332" # v4.1.7 | |
| with: | |
| submodules: True | |
| - uses: "actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16" # v4.1.8 | |
| with: | |
| name: "lock" | |
| - uses: "actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9" # v4.0.2 | |
| with: | |
| path: "${{ env.UV_CACHE_DIR }}" | |
| key: "uv-${{ matrix.runner }}-${{ matrix.python }}-${{ hashFiles('lock.json') }}" | |
| - uses: "actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f" # v5.1.1 | |
| with: | |
| python-version: "${{ matrix.python }}" | |
| - run: "scripts/Sync-Py.ps1" | |
| - uses: "jakebailey/pyright-action@3bdde3b31d26f0f1f5de051b1fbd7a536a9a4e7f" # v2.3.1 | |
| with: | |
| pylance-version: "${{ env.PYRIGHT_PYTHON_PYLANCE_VERSION }}" | |
| test: | |
| needs: "sync" | |
| strategy: | |
| matrix: | |
| runner: | |
| - "macos-13" | |
| - "ubuntu-22.04" | |
| - "windows-2022" | |
| python: | |
| - "3.11" | |
| - "3.12" | |
| runs-on: "${{ matrix.runner }}" | |
| steps: | |
| - uses: "actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332" # v4.1.7 | |
| with: | |
| submodules: True | |
| - uses: "actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16" # v4.1.8 | |
| with: | |
| name: "lock" | |
| - uses: "actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9" # v4.0.2 | |
| with: | |
| path: "${{ env.UV_CACHE_DIR }}" | |
| key: "uv-${{ matrix.runner }}-${{ matrix.python }}-${{ hashFiles('lock.json') }}" | |
| - uses: "actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f" # v5.1.1 | |
| with: | |
| python-version: "${{ matrix.python }}" | |
| - run: "scripts/Sync-Py.ps1 -Version '${{ matrix.python }}'" | |
| - run: "pytest" | |
| - if: startsWith(matrix.runner, 'ubuntu') && matrix.python == '3.11' | |
| uses: "codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673" # v4.5.0 | |
| env: | |
| CODECOV_TOKEN: "${{ secrets.CODECOV_TOKEN }}" | |
| lock: | |
| needs: | |
| - "ruff" | |
| - "fawltydeps" | |
| - "pyright" | |
| - "test" | |
| permissions: | |
| contents: "write" | |
| strategy: | |
| matrix: | |
| runner: ["ubuntu-22.04"] | |
| python: ["3.11"] | |
| runs-on: "${{ matrix.runner }}" | |
| steps: | |
| - uses: "actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332" # v4.1.7 | |
| with: | |
| submodules: True | |
| - uses: "actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16" # v4.1.8 | |
| with: | |
| name: "lock" | |
| - uses: "actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9" # v4.0.2 | |
| with: | |
| path: "${{ env.UV_CACHE_DIR }}" | |
| key: "uv-${{ matrix.runner }}-${{ matrix.python }}-${{ hashFiles('lock.json') }}" | |
| - uses: "actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f" # v5.1.1 | |
| with: | |
| python-version: "${{ matrix.python }}" | |
| - run: "scripts/Sync-Py.ps1" | |
| - uses: "stefanzweifel/git-auto-commit-action@8621497c8c39c72f3e2a999a26b4ca1b5058a842" # v5.0.1 | |
| with: | |
| commit_message: "Sync and lock" |