| name: CI | |
| on: | |
| push: | |
| pull_request: | |
| permissions: | |
| contents: read | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ["3.11", "3.12"] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| cache: pip | |
| cache-dependency-path: | | |
| requirements.txt | |
| requirements-dev.txt | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| python -m pip install -r requirements-dev.txt | |
| - name: Lint | |
| run: python -m ruff check app.py src tests scripts | |
| - name: Compile | |
| run: python -m compileall app.py src tests scripts | |
| - name: Test | |
| run: python scripts/run_pytest.py -q | |
| - name: Streamlit import smoke test | |
| run: python -c "import app; from src.dashboard import CommandCenterApp; CommandCenterApp()" | |
| docker-build: | |
| runs-on: ubuntu-latest | |
| needs: test | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Build and smoke test Docker image | |
| run: python3 scripts/docker_smoke.py --image rag-qa-command-center:ci | |