Merge pull request #11 from Samarth2001/claude/phase5-6-01ABwdavjJNEC… #3
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", "main-*", "claude/*"] | |
| pull_request: | |
| branches: ["main", "main-*"] | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| lint: | |
| name: Lint | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| cache: pip | |
| - name: Install lint tools | |
| run: pip install black==24.4.2 isort==5.13.2 | |
| - name: black (check) | |
| run: black --check --diff src/ scripts/ tests/ | |
| - name: isort (check) | |
| run: isort --check-only --diff src/ scripts/ tests/ | |
| test: | |
| name: Tests (Python ${{ matrix.python-version }}) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ["3.10", "3.11", "3.12"] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| cache: pip | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -r requirements.txt | |
| - name: Run unit tests | |
| run: | | |
| pytest tests/unit/ -v --tb=short \ | |
| --cov=src/f1_predictor \ | |
| --cov-report=term-missing \ | |
| --cov-report=xml:coverage.xml \ | |
| -q | |
| - name: Run integration tests | |
| run: | | |
| pytest tests/integration/ -v --tb=short -q | |
| - name: Run system tests | |
| run: | | |
| pytest tests/system/ -v --tb=short -q | |
| - name: Upload coverage report | |
| if: matrix.python-version == '3.11' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: coverage-report | |
| path: coverage.xml | |
| retention-days: 7 | |
| api-smoke: | |
| name: API smoke test | |
| runs-on: ubuntu-latest | |
| needs: test | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| cache: pip | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -r requirements.txt | |
| - name: Start API server in background | |
| run: | | |
| python -m uvicorn src.f1_predictor.api:app --host 127.0.0.1 --port 8000 & | |
| sleep 3 | |
| - name: Health check | |
| run: | | |
| curl -f http://127.0.0.1:8000/health | |
| - name: Docs endpoint | |
| run: | | |
| curl -f http://127.0.0.1:8000/openapi.json | python -c "import sys,json; d=json.load(sys.stdin); print(d['info']['title'])" |