Spaces:
Running
Running
| name: CI/CD Pipeline | |
| # Run CI on changes to main and dev branches and PRs targeting them. | |
| on: | |
| push: | |
| branches: [main, dev] | |
| pull_request: | |
| branches: [main, dev] | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| steps: | |
| # Checkout repository code. | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| # Set up Python 3.11 for tests. | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| # Install dependencies and test tooling. | |
| - name: Install dependencies | |
| run: | | |
| pip install -r requirements-inference.txt | |
| # Install the package in editable mode so `src` is importable in CI | |
| pip install -e . | |
| pip install pytest pytest-cov | |
| - name: Export preprocessor | |
| run: | | |
| python3 models/export_preprocessor.py | |
| # Run test suite with coverage. | |
| - name: Run tests | |
| run: pytest --cov=app --cov-report=term-missing -v | |
| build-docker: | |
| # Only build if tests succeed. | |
| needs: test | |
| if: success() | |
| runs-on: ubuntu-latest | |
| steps: | |
| # Checkout repository code. | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| # Optional: set up Python (not required for Docker build). | |
| - name: Setup Python (optional) | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| # Build Docker image locally (no registry push). | |
| - name: Build Docker image | |
| run: docker build -t api . | |