name: CI on: push: branches: [main] pull_request: # Cancel superseded runs on the same ref to save CI minutes. concurrency: group: ci-${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true permissions: contents: read jobs: lint: name: lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - name: Install uv uses: astral-sh/setup-uv@v8.2.0 with: enable-cache: true cache-dependency-glob: uv.lock - name: Set up Python run: uv python install 3.12 - name: Install dependencies (frozen) run: make install-deps - name: Lint (ruff + import-linter + datetime + openapi drift) run: make lint unit: name: unit tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - name: Install uv uses: astral-sh/setup-uv@v8.2.0 with: enable-cache: true cache-dependency-glob: uv.lock - name: Set up Python run: uv python install 3.12 - name: Install dependencies (frozen) run: make install-deps - name: Unit tests run: make test integration: name: integration tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - name: Install uv uses: astral-sh/setup-uv@v8.2.0 with: enable-cache: true cache-dependency-glob: uv.lock - name: Set up Python run: uv python install 3.12 - name: Install dependencies (frozen) run: make install-deps - name: Integration tests run: make integration package: name: package build runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - name: Install uv uses: astral-sh/setup-uv@v8.2.0 with: enable-cache: true cache-dependency-glob: uv.lock - name: Set up Python run: uv python install 3.12 - name: Build and smoke-test package run: make package