Imputation #189
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: CI | |
| on: | |
| push: | |
| branches: [main, develop] | |
| pull_request: | |
| branches: [main, develop] | |
| types: [opened, synchronize, reopened, ready_for_review] | |
| jobs: | |
| lint: | |
| name: Lint | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v3 | |
| with: | |
| enable-cache: true | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Run Ruff (lint + format check) | |
| run: | | |
| uv run ruff check . | |
| uv run ruff format --check . | |
| test: | |
| name: Test (Python ${{ matrix.python-version }}) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ["3.11", "3.12", "3.13", "3.14"] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v3 | |
| with: | |
| enable-cache: true | |
| - name: Install Python ${{ matrix.python-version }} | |
| run: uv python install ${{ matrix.python-version }} | |
| - name: Sync environment | |
| run: uv sync --group test | |
| - name: Run pytest with coverage | |
| run: | | |
| uv run pytest --cov=travel_diary_survey_tools \ | |
| --cov-report=xml \ | |
| --cov-report=term-missing | |
| - name: Upload coverage to Codecov | |
| if: matrix.python-version == '3.12' | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| files: ./coverage.xml | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| fail_ci_if_error: false | |
| check: | |
| name: Check Results | |
| needs: [lint, test] | |
| runs-on: ubuntu-latest | |
| if: always() | |
| steps: | |
| - name: Aggregate results | |
| run: | | |
| if [ "${{ needs.lint.result }}" != "success" ] || [ "${{ needs.test.result }}" != "success" ]; then | |
| echo "One or more checks failed." | |
| exit 1 | |
| fi | |
| echo "All checks passed successfully!" | |
| column_matrix: | |
| name: Generate Column Matrix | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.head_ref || github.ref }} | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v3 | |
| with: | |
| enable-cache: true | |
| - name: Sync environment | |
| run: uv sync --group dev | |
| - name: Generate Column Matrix | |
| run: | | |
| uv run python scripts/generate_column_matrix.py | |
| - name: Check for changes | |
| id: verify_diff | |
| run: | | |
| git diff --quiet docs/COLUMN_REQUIREMENTS.md || echo "changed=true" >> $GITHUB_OUTPUT | |
| - name: Verify file is up-to-date (PR only) | |
| if: steps.verify_diff.outputs.changed == 'true' && github.event_name == 'pull_request' | |
| run: | | |
| echo "COLUMN_REQUIREMENTS.md is out of date!" | |
| echo "Please run 'python scripts/generate_column_matrix.py' locally and commit the changes." | |
| echo "Or ensure pre-commit hooks are installed: 'pre-commit install'" | |
| exit 1 | |
| - name: Commit and push if changed (push only) | |
| if: steps.verify_diff.outputs.changed == 'true' && github.event_name == 'push' | |
| run: | | |
| git config --local user.email "github-actions[bot]@users.noreply.github.com" | |
| git config --local user.name "github-actions[bot]" | |
| git add docs/COLUMN_REQUIREMENTS.md | |
| git commit -m "docs: auto-update column requirements matrix [skip ci]" | |
| git push |