| name: QuantIQ CI/CD Pipeline | |
| on: | |
| push: | |
| branches: [ main ] | |
| pull_request: | |
| branches: [ main ] | |
| jobs: | |
| # Job 1: Validate Frontend Code quality, Type safety, and Build verification | |
| frontend-ci: | |
| name: Frontend Quality & Build Verification | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: 'npm' | |
| cache-dependency-path: frontend/package-lock.json | |
| - name: Install Frontend Dependencies | |
| run: npm ci | |
| working-directory: frontend | |
| - name: Verify TypeScript Compilation & Linting | |
| run: npm run build | |
| working-directory: frontend | |
| # Job 2: Validate Backend Linting, Format Checks, and Model Inferences | |
| backend-ci: | |
| name: Backend Quality & Ruff Validation | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.12' | |
| - name: Install uv Package Manager | |
| run: curl -LsSf https://astral.sh/uv/install.sh | sh | |
| - name: Install Dependencies via uv | |
| run: uv sync --frozen | |
| - name: Run Ruff Linter | |
| run: uv run ruff check . | |
| continue-on-error: true # Warning mode for initial transition | |
| - name: Verify Backend Entry Point builds | |
| run: uv run python -c "from backend.app import main" | |
| env: | |
| DATABASE_URL: "postgresql+asyncpg://mock:mock@localhost:5432/mock" | |
| REDIS_URL: "redis://localhost:6379/0" | |
| GEMINI_API_KEY: "mock_api_key" | |