Remove the Vercel deploy pipeline - #347
Conversation
The repo is no longer one Next.js app behind a Vercel project. It is a
monorepo of several apps and services, and the thing that actually ships
them is docker.yml publishing images to GHCR. The Vercel pipeline was
still wired up alongside that, so every PR rebuilt a preview for a
deployment target nothing depends on.
Delete the pipeline itself. There was never a GitHub Actions job for it —
deploys ran off the Vercel Git integration reading these files:
- apps/web/vercel.json install/build/migrate + the preview ignoreCommand
- apps/landing/vercel.json
- .vercelignore
- docs/deployment/vercel.md
Then repair what pointed at them:
- check-no-push.mjs listed both vercel.json files as deploy surfaces.
Dropping them silently shrank the guardrail, so apps/worker/Dockerfile
takes their place — it is a real deploy surface that was never covered.
- migrate.mjs recorded migration attribution from VERCEL_GIT_COMMIT_SHA,
which nothing sets anymore. GITHUB_SHA is what the surviving pipeline
actually exports.
- guard-push.mjs tripped on VERCEL / VERCEL_ENV; now CI / GITHUB_ACTIONS.
- docs/deployment.md "Option 2: Vercel" becomes the GHCR container-image
path that docker.yml already builds.
CLAUDE.md and apps/web/README.md both warned that a script importing
__tests__ helpers "will pass CI but break every Vercel deploy". That
hazard does not transfer to Docker: .dockerignore's bare `__tests__`
pattern matches only the build-context root, so apps/web/__tests__ is
copied into the image (verified against a throwaway build). The warning
was a .vercelignore artifact and dies with it, so it is removed rather
than retargeted — and the three run-founder-weekly-review-*.ts scripts
.vercelignore special-cased need no replacement handling.
Runtime stays: @vercel/analytics, the @vercel/blob storage adapter, and
the VERCEL_ENV reads in the metrics/health routes are hosting-independent
choices, not CI/CD.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_65f5d85d-d3b2-47e4-95d3-1fdcdb6f589c) |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 20047241dd
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| 2. Apply schema before rolling the app — run `db:migrate` as a one-shot job on | ||
| the same image (`docker compose run --rm migrate`, a Kubernetes Job, or a | ||
| release command). Nothing applies schema on container boot. |
There was a problem hiding this comment.
Publish a runnable migration image
For operators following this new GHCR deployment path, the documented one-shot migration cannot run on “the same image”: docker.yml publishes only the runner target, while the migrate target is built with push: false, and the runner contains neither pnpm nor the migration scripts. Consequently, a Kubernetes Job or release command based on ghcr.io/<owner>/<repo>-web cannot execute db:migrate, leaving fresh or upgraded databases without the required schema. Publish the migration target separately or document an executable migration path.
Useful? React with 👍 / 👎.
| { | ||
| "$schema": "https://openapi.vercel.sh/vercel.json", | ||
| "installCommand": "npx -y pnpm@10.15.1 install --frozen-lockfile --ignore-scripts", | ||
| "buildCommand": "if [ \"$VERCEL_ENV\" = \"production\" ]; then npx -y pnpm@10.15.1 db:migrate; else npx -y pnpm@10.15.1 db:verify || true; fi && npx -y pnpm@10.15.1 build", |
There was a problem hiding this comment.
Retire the live Vercel guide before deleting its config
When a visitor follows the still-active /deployment Vercel flow in apps/landing, the guide explicitly tells them to select apps/web so Vercel uses this file and then simply click Deploy. Deleting this buildCommand removes the only step that applies production migrations, so such deployments can still be triggered through Vercel's Git integration but will run against a missing or stale schema. Remove/update that live deployment flow as part of this change, or retain equivalent migration configuration.
Useful? React with 👍 / 👎.
Why
The repo is no longer one Next.js app behind a Vercel project. It is a monorepo of several apps and services, and the thing that actually ships them is
docker.ymlpublishing images to GHCR. The Vercel pipeline was still wired up alongside that, so every PR rebuilt a preview for a deployment target nothing depends on.What was removed
There was never a GitHub Actions job for Vercel — deploys ran off the Vercel Git integration reading these files:
apps/web/vercel.jsonignoreCommandapps/landing/vercel.jsonignoreCommand.vercelignoredocs/deployment/vercel.mdWhat was repaired
Deleting those left live references behind:
scripts/ci/check-no-push.mjslisted bothvercel.jsonfiles as deploy surfaces. Just dropping them would silently shrink the guardrail, soapps/worker/Dockerfiletakes their place — a real deploy surface that was never covered. Gate re-run, passes.packages/core/scripts/migrate.mjsrecorded migration attribution fromVERCEL_GIT_COMMIT_SHA, which nothing sets anymore →GITHUB_SHA, what the surviving pipeline actually exports.packages/core/scripts/guard-push.mjstripped on["CI", "VERCEL", "VERCEL_ENV"]→["CI", "GITHUB_ACTIONS"].docs/deployment.md— "Option 2: Vercel" becomes the GHCR container-image pathdocker.ymlalready builds.REPOSITORY.md,README.md,CLAUDE.md,CI.yml,pnpm-workspace.yaml,apps/web/Dockerfile, and the rootpackage.jsondescription (itsbuild/db:migratealiases were justified solely by "a deploy platform configured with the repository root" — kept as conveniences, rationale rewritten).apps/web/next.config.ts— removed two orphaned comment lines describing a Vercel output-tracing option that no longer exists in the file.The
__tests__warning, checked rather than assumedCLAUDE.mdandapps/web/README.mdboth warned that a script importing__tests__helpers "will pass CI but break every Vercel deploy."That hazard does not transfer to Docker.
.dockerignore's bare__tests__pattern matches only the build-context root, soapps/web/__tests__is copied into the image — verified against a throwaway build rather than reasoned about. The warning was a.vercelignoreartifact and dies with it, so it is removed rather than retargeted, and the threerun-founder-weekly-review-*.tsscripts.vercelignorespecial-cased need no replacement handling.Deliberately left alone
Runtime is not CI/CD:
@vercel/analyticsin both apps, the@vercel/blobstorage adapter and its callers, and theVERCEL_ENV/VERCELreads inmetrics/route.ts,health/route.ts, andCloudAnalytics.tsxall stay. Also untouched:api/adeu(already deprecated and never deployed), the landing site's Vercel marketing pages, and historical ADRs.Noticed, not fixed
docs/architecture/current-infrastructure-map.mdhas several Vercel references, but it is already a stale snapshot describingservices/ocr-router,services/ocr-worker, andsidecar/— none of which exist. Patching only its Vercel lines would make it look freshly maintained while still being wrong. Needs its own refresh./api/healthreportsversionfromGIT_COMMIT_SHA, which nothing in the repo sets, so it reports"unknown". Already true for every non-Vercel deploy, so not a regression — but wiring it as a Docker build arg would be a small win.Verification
node scripts/ci/check-no-push.mjspasses.mjsfiles passnode --check;CI.yml/pnpm-workspace.yamlparse as YAML; rootpackage.jsonparsestypecheckrun — this worktree has nonode_modules. The only.tsedit was a comment-only deletion. Prettier's glob (ts,tsx,js,jsx,mdx) does not cover the.mjs/.md/.ymlfiles touched.🤖 Generated with Claude Code
Note
Low Risk
Documentation and deploy-config deletion with small script env renames; no application runtime or auth logic changes.
Overview
Removes the unused Vercel deploy path so PRs no longer rebuild previews for a target nothing ships to. GHCR images from
docker.ymland Compose are the documented shipping path.Deleted:
apps/web/vercel.json,apps/landing/vercel.json, root.vercelignore, and the fulldocs/deployment/vercel.mdguide (install/build/migrate-on-prod, ignore commands, and deploy exclusions).CI / schema tooling:
scripts/ci/check-no-push.mjsdropsvercel.jsonfrom deploy surfaces and addsapps/worker/Dockerfile.guard-push.mjsblocks onCI/GITHUB_ACTIONSinstead ofVERCEL/VERCEL_ENV.migrate.mjsrecords migration attribution fromGITHUB_SHAinstead ofVERCEL_GIT_COMMIT_SHA.Docs and comments:
docs/deployment.mdreplaces “Option 2: Vercel” with container images on any host (migrate as a one-shot job, worker + Inngest).REPOSITORY.md,README.md,CLAUDE.md,CI.yml,pnpm-workspace.yaml, andapps/web/Dockerfileprose now describe production image builds, not Vercel. Rootpackage.jsondescription reframesbuild/db:migrateas convenience aliases. Removed Vercel-specific warnings fromapps/web/README.mdand orphaned Vercel output comments fromapps/web/next.config.ts.Explicitly unchanged: runtime
@vercel/*usage (analytics, blob adapter, health/metrics env reads) stays; only the repo’s Vercel pipeline is removed.Reviewed by Cursor Bugbot for commit 2004724. Bugbot is set up for automated code reviews on this repo. Configure here.