Overview
CI runs on GitHub Actions (.github/workflows/ci.yml). Its job is lint, test, and build verification. Deployment is handled separately by Vercel’s Git integration — there is no deploy step in this workflow.
Triggers
pushto any branchpull_requestworkflow_dispatch(manual)
Push Guard
On push events, the workflow skips if github.repository_owner == 'CodeChefVIT'. This prevents double-runs when a PR is opened from a branch on the main repo (Vercel and the PR check both run; the redundant push check is suppressed).
Environment
| Setting | Value |
|---|---|
| Node.js | 24 |
| pnpm | 10.33.1 |
Steps
- Checkout code —
actions/checkout - Setup Node.js 24
- Setup pnpm — pinned to 10.33.1
- Install dependencies —
pnpm install --frozen-lockfile - Lint —
pnpm lint - Test —
pnpm test:ci(vitest with v8 coverage provider) - Build —
pnpm buildwith inline dummy env vars (see below) - Upload coverage artifact — coverage report uploaded after test step
Build Env Vars in CI
The build step injects dummy values to satisfy the env schema (since skipValidation is false outside production). These are not secrets — they exist only to let next build succeed:
NEXT_PUBLIC_SUPABASE_URL=http://localhost:54321
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY=dummy
SUPABASE_SERVICE_ROLE_KEY=dummy-service-role-key-for-ci
GITHUB_APP_ID=1
GITHUB_CLIENT_ID=dummy
GITHUB_CLIENT_SECRET=dummy32charlongsecretforcitest
GITHUB_PRIVATE_KEY=<RSA key placeholder>AUTH_SESSION_SECRET, TOKEN_ENCRYPTION_KEY, and Upstash vars are not required to build successfully — only the vars above are needed to pass schema validation.
Coverage
pnpm test:ci runs vitest with the v8 coverage provider. The coverage artifact is uploaded at the end of the workflow and is accessible from the Actions run summary.
What CI Does Not Do
- No deploy step — Vercel handles that
- No typecheck step (separate from lint)
- No migration or database checks
- No end-to-end tests