Skip to content

BSL-67: CI/CD pipeline (GitHub Actions)#66

Merged
rohanarcot merged 3 commits into
mainfrom
bsl-67-cicd
Jun 4, 2026
Merged

BSL-67: CI/CD pipeline (GitHub Actions)#66
rohanarcot merged 3 commits into
mainfrom
bsl-67-cicd

Conversation

@rohanarcot

Copy link
Copy Markdown
Collaborator

BSL-67 — CI/CD

Adds GitHub Actions CI that runs on every PR to main, plus the ESLint config
and small fixes needed to make lint + build actually pass.

Changes

  • .github/workflows/ci.yml (new) — CI on pull_requestmain:
    checkout → Node 20 → npm ci --legacy-peer-depsnpx prisma generate
    npm run lintnpm run build.
    • --legacy-peer-deps: react-simple-maps@3 pins React 18 while we run
      React 19, so plain npm ci fails peer resolution.
    • Ephemeral mongo:7 service container: the gallery pages query MongoDB
      during next build's static prerender, so the build needs a reachable DB.
      Queries just return empty sets — no real data/secrets in CI.
  • .eslintrc.json (new) — the repo had no ESLint config, so npm run lint
    was unrunnable. Added next/core-web-vitals.
  • .env.example — documented RESEND_API_KEY, BSL_ADMIN_EMAIL, and the
    production OAuth redirect URI.
  • .gitignore — ignore .DS_Store.

Bug fixes (build was red on main)

  • app/api/admin/applications/route.ts: imported @/generated/prisma/client,
    which is never generated → next build failed with "Cannot find module".
    Switched to @prisma/client, matching the other import sites.
  • access-denied/page.tsx: escaped an apostrophe tripping
    react/no-unescaped-entities.

Verification

  • npm run lint → exit 0
  • npm run build (against a Mongo container) → exit 0

Follow-ups (not in this PR)

  • Branch protection: require the Lint & Build check on main.
  • CI runs npm run lint (ESLint), not lint-check — the latter's
    prettier --check fails on 82 unformatted files; a repo-wide prettier --write
    should land as its own chore PR.

@rohanarcot rohanarcot requested a review from gavinlin24 June 3, 2026 21:58
@rohanarcot rohanarcot self-assigned this Jun 3, 2026

@gavinlin24 gavinlin24 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One fix that lives outside this PR's files: CLAUDE.md still tells people to import from @/generated/prisma/client, the exact broken path you just fixed. That path doesn't get generated anymore, so the guide will lead the next person (or an AI assistant) to put this bug right back in. Worth a quick one-line update to @prisma/client.

One more note inline on ci.yml.

Comment thread .github/workflows/ci.yml Outdated
@rohanarcot rohanarcot requested a review from gavinlin24 June 4, 2026 03:43

@gavinlin24 gavinlin24 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both follow-ups from the earlier review are handled in c5de4a5:

  • CLAUDE.md now documents @prisma/client (no more @/generated/prisma/client).
  • The ci.yml comment names the actual "Lint & Build" check.

I verified the pipeline builds green earlier, so approving.

Note, separate from this PR: the deployment work (Vercel, Atlas, Google OAuth in production) and enabling branch protection on main still need to happen before BSL-67 is fully complete.

@rohanarcot rohanarcot merged commit 9a7b031 into main Jun 4, 2026
1 check passed
@rohanarcot rohanarcot deleted the bsl-67-cicd branch June 4, 2026 20:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants