Skip to main content

CI/CD β€” GitHub Actions

Guardrails

  • Triggers: PRs to main + pushes to main
  • Required checks: lint, typecheck, tests, coverage gate
  • Caching: pnpm + Turbo
  • Concurrency: cancel in-progress per branch
  • No environment protections; no artifacts/matrix by default
  • CI β†’ Cloud auth: GitHub OIDC β†’ GCP (no long‑lived keys)
name: CI
on:
pull_request:
branches: [main]
push:
branches: [main]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with: { version: 9 }
- uses: actions/setup-node@v4
with: { node-version: '20', cache: 'pnpm' }
- run: pnpm i --frozen-lockfile
- run: pnpm lint
- run: pnpm typecheck
- run: pnpm test
- run: pnpm build

Performance Budgets (PR Gate)

  • Target: LCP < 2.5s, CLS < 0.1, TTI < 3.5s on key pages.
  • Suggested: add Lighthouse CI stage to enforce budgets on preview builds.
{
"ci": {
"collect": { "staticDistDir": "apps/web/.next" },
"assert": { "assertions": { "categories:performance": ["error", { "minScore": 0.9 }] } }
}
}

LLM Notes

  • Always produce Node 20‑compatible scripts. Add new jobs only if aligned with the paved path.