name: CI on: push: branches: [main, feat/planning-hub] pull_request: branches: [main] jobs: backend: runs-on: ubuntu-latest services: postgres: image: postgres:16-alpine env: POSTGRES_DB: cc_dashboard_test POSTGRES_USER: cc_app POSTGRES_PASSWORD: cc_pass ports: ["5433:5432"] options: --health-cmd pg_isready --health-interval 5s --health-timeout 3s --health-retries 10 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.11" - run: pip install -r requirements.txt pytest pytest-asyncio aiosqlite ruff - run: ruff check . - name: Run tests env: DATABASE_URL: postgresql+asyncpg://cc_app:cc_pass@localhost:5433/cc_dashboard_test SECRET_KEY: test-secret-key run: pytest -q frontend: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" - name: Build frontend if present run: | if [ -d web ]; then cd web && npm ci && npm run lint && npm run typecheck && npm run build fi