Spaces:
Sleeping
Sleeping
| name: CI | |
| on: | |
| push: | |
| pull_request: | |
| # Least-privilege default: neither job needs to write to the repo. | |
| # Source: https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflows-do/controlling-permissions-for-github_token | |
| permissions: | |
| contents: read | |
| # Cancel a run that's superseded by a newer push to the same branch/PR, | |
| # so CI doesn't keep chewing through stale commits. | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| backend: | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: backend | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.13" | |
| cache: pip | |
| cache-dependency-path: backend/requirements-dev.txt | |
| # requirements-dev.txt deliberately excludes torch/transformers/captum/sklearn: | |
| # unit tests mock the model, so CI stays fast and light. Integration | |
| # tests (pytest -m integration) run locally where the weights live. | |
| - run: pip install -r requirements-dev.txt | |
| - run: ruff check . | |
| - run: pytest -v | |
| frontend: | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: frontend | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: actions/setup-node@v6 | |
| with: | |
| # Node 24 is Active LTS (supported through Apr 2028) and satisfies | |
| # Vite 8's engines range. Node 26 is "Current", not yet LTS — | |
| # avoid it here for CI/Docker stability (see plan review fix #5). | |
| node-version: "24" | |
| cache: npm | |
| cache-dependency-path: frontend/package-lock.json | |
| - run: npm ci | |
| - run: npm run lint | |
| - run: npm test -- --run | |
| - run: npm run build | |