👷 Migrate Dependabot project dependencies updates to uv #4346
Workflow file for this run
This file contains 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: CI | |
on: # yamllint disable-line rule:truthy | |
push: | |
branches: | |
- master | |
workflow_dispatch: | |
pull_request: | |
jobs: | |
# Quality jobs ---------------------- | |
code-quality: | |
strategy: | |
matrix: | |
python-version: ["3.13"] | |
name: Code Quality | |
runs-on: "ubuntu-latest" | |
steps: | |
- name: Check out the repository | |
uses: actions/checkout@v4 | |
- name: Install uv and set the python version | |
uses: astral-sh/setup-uv@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
enable-cache: true | |
cache-dependency-glob: "uv.lock" | |
- name: Install Tox | |
run: | | |
uv pip install --constraint=.github/workflows/constraints.txt tox | |
tox --version | |
- name: Load cached tox testenv(s) (if they exist) | |
id: cached-dependencies | |
uses: actions/cache@v4 | |
with: | |
path: | | |
.tox | |
key: tox-${{ github.workflow }}-${{ github.job }}-${{ runner.os }}-CPython${{ matrix.python-version }}-${{ hashFiles('**/uv.lock') }} | |
- name: Run static analysis | |
run: | | |
make pre-commit | |
# Security jobs ---------------------- | |
dependency-security-vulnerability-analysis: | |
strategy: | |
matrix: | |
python-version: ["3.13"] | |
name: Dependency Security Vulnerability Analysis | |
runs-on: "ubuntu-latest" | |
steps: | |
- name: Check out the repository | |
uses: actions/checkout@v4 | |
- name: Install uv and set the python version | |
uses: astral-sh/setup-uv@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
enable-cache: true | |
cache-dependency-glob: "uv.lock" | |
- name: Install Tox | |
run: | | |
uv pip install --constraint=.github/workflows/constraints.txt tox | |
tox --version | |
- name: Load cached tox testenv(s) (if they exist) | |
id: cached-dependencies | |
uses: actions/cache@v4 | |
with: | |
path: | | |
.tox | |
key: tox-${{ github.workflow }}-${{ github.job }}-${{ runner.os }}-CPython${{ matrix.python-version }}-${{ hashFiles('**/uv.lock') }} | |
- name: Run dependency security vulnerability analysis | |
run: | | |
make scan-dependencies | |
# Code quality AND security job ---------------------- | |
semgrep: | |
runs-on: ubuntu-latest | |
name: Semgrep | |
steps: | |
- name: Check out the repository | |
uses: actions/checkout@v4 | |
- name: Disable Git LFS | |
run: | | |
rm .git/hooks/post-checkout || true | |
- name: Run Semgrep | |
id: semgrep | |
uses: returntocorp/semgrep-action@v1 | |
with: | |
config: r/python | |
# Tests jobs ------------------------ | |
test: | |
strategy: | |
matrix: | |
os: ["ubuntu-latest", "macos-latest"] | |
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] | |
name: Python ${{ matrix.python-version }} (${{ matrix.os }}) | |
runs-on: ${{ matrix.os }} | |
env: | |
USING_COVERAGE_OS: "ubuntu" | |
USING_COVERAGE_PY_VER: "3.13" | |
steps: | |
- name: Check out the repository | |
uses: actions/checkout@v4 | |
- name: Install uv and set the python version | |
uses: astral-sh/setup-uv@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
enable-cache: true | |
cache-dependency-glob: "uv.lock" | |
- name: Install Tox & Tox GH Actions Plugin | |
run: | | |
uv pip install --constraint=.github/workflows/constraints.txt tox | |
tox --version | |
- name: Load cached tox testenv(s) (if they exist) | |
id: cached-dependencies | |
uses: actions/cache@v4 | |
with: | |
path: | | |
.tox | |
key: tox-${{ github.workflow }}-${{ github.job }}-${{ runner.os }}-CPython${{ matrix.python-version }}-${{ hashFiles('**/uv.lock') }} | |
- name: Run tox targets for ${{ matrix.python-version }} | |
uses: nick-invision/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
shell: bash | |
command: | | |
git fetch origin master:refs/remotes/origin/master | |
make test | |
env: | |
TOX_GH_MAJOR_MINOR: ${{ matrix.python-version }} | |
- name: Upload coverage to Codecov | |
if: "contains(matrix.os, env.USING_COVERAGE_OS) && | |
contains(matrix.python-version, env.USING_COVERAGE_PY_VER)" | |
uses: "codecov/[email protected]" | |
with: | |
files: ./.tox/coverage.xml | |
disable_search: true | |
token: ${{ secrets.CODECOV_TOKEN }} | |
fail_ci_if_error: true | |
# Documentation build testing jobs ------------------------ | |
test-documentation-building: | |
strategy: | |
matrix: | |
python-version: ["3.13"] | |
name: Documentation build testing | |
runs-on: "ubuntu-latest" | |
steps: | |
- name: Check out the repository | |
uses: actions/checkout@v4 | |
- name: Install uv and set the python version | |
uses: astral-sh/setup-uv@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
enable-cache: true | |
cache-dependency-glob: "uv.lock" | |
- name: Load cached venv(s) (if they exist) | |
id: cached-dependencies | |
uses: actions/cache@v4 | |
with: | |
path: | | |
.venv | |
key: venv-${{ runner.os }}-CPython${{ matrix.python-version }}-${{ hashFiles('**/uv.lock') }} | |
- name: Install dependencies | |
run: | | |
make install | |
- name: Build Documentation | |
run: | | |
make docs-html \ | |
LAUNCH_DOCS_PREVIEW=false | |
# Mutation testing jobs ------------------------ | |
test-mutations: | |
strategy: | |
matrix: | |
python-version: ["3.12"] | |
name: Mutation testing | |
runs-on: "ubuntu-latest" | |
steps: | |
- name: Check out the repository | |
uses: actions/checkout@v4 | |
with: | |
lfs: true | |
- name: Install uv and set the python version | |
uses: astral-sh/setup-uv@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
enable-cache: true | |
cache-dependency-glob: "uv.lock" | |
- name: Install Tox | |
run: | | |
uv pip install --constraint=.github/workflows/constraints.txt tox | |
tox --version | |
- name: Load cached tox testenv(s) (if they exist) | |
id: cached-dependencies | |
uses: actions/cache@v4 | |
with: | |
path: | | |
.tox | |
key: tox-${{ github.workflow }}-${{ github.job }}-${{ runner.os }}-CPython${{ matrix.python-version }}-${{ hashFiles('**/uv.lock') }} | |
- name: Run mutation testing | |
run: | | |
make test-mutations | |
- name: Store the updated mutation testing cache | |
uses: actions/upload-artifact@v4 | |
with: | |
name: mutmut-cache | |
path: ./.mutmut-cache | |
include-hidden-files: true |