Farooq: improve workshop guide and lab configuration documentation #7
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] | |
| pull_request: | |
| branches: [main] | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| # ────────────────────────────────────────────── | |
| # Backend: lint + unit tests | |
| # ────────────────────────────────────────────── | |
| backend-lint: | |
| name: Backend Lint | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: . | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| cache: pip | |
| - name: Install dependencies | |
| run: | | |
| pip install --upgrade pip | |
| pip install ruff pyflakes | |
| - name: Ruff check | |
| run: ruff check app/ tests/ scripts/ | |
| - name: Pyflakes check | |
| run: pyflakes app/ tests/ scripts/ | |
| backend-test: | |
| name: Backend Tests | |
| runs-on: ubuntu-latest | |
| needs: backend-lint | |
| defaults: | |
| run: | |
| working-directory: . | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| cache: pip | |
| - name: Install dependencies | |
| run: | | |
| pip install --upgrade pip | |
| pip install -r requirements.txt | |
| pip install pytest pytest-asyncio httpx | |
| - name: Run tests | |
| run: pytest tests/ -v --tb=short | |
| # ────────────────────────────────────────────── | |
| # Frontend: lint + build | |
| # ────────────────────────────────────────────── | |
| frontend-lint-build: | |
| name: Frontend Lint & Build | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: frontend | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "18" | |
| cache: npm | |
| cache-dependency-path: frontend/package-lock.json | |
| - name: Install dependencies | |
| run: npm ci --silent | |
| - name: Lint (via build) | |
| run: npx react-scripts build | |
| env: | |
| CI: true | |
| # ────────────────────────────────────────────── | |
| # Docker: validate the full stack builds | |
| # ────────────────────────────────────────────── | |
| docker-build: | |
| name: Docker Build | |
| runs-on: ubuntu-latest | |
| needs: [backend-test, frontend-lint-build] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build backend image | |
| run: docker build -f docker/Dockerfile -t aigoat-backend . | |
| - name: Build frontend image | |
| run: docker build -f frontend/Dockerfile -t aigoat-frontend frontend/ |