Deploy the landing page
Runbook for deploying the Astro site to Cloudflare Pages.
Runbook: deploy the landing page
Landing deploys are manual (workflow_dispatch on deploy-landing.yml).
They are not triggered by push.
Steps
-
Confirm
mainis green — check the latestCIworkflow run. -
Build locally to catch issues before triggering the workflow:
cd apps/landing-page-astro pnpm install pnpm build test -f dist/index.html test -f dist/privacy.html test -f dist/download.html test -f dist/sitemap-index.xml test -f dist/robots.txt -
Trigger the deploy workflow:
gh workflow run deploy-landing.yml --ref main gh run watchOr use the GitHub Actions UI: Actions → “Deploy Landing Page” → Run workflow.
-
Verify the deploy in the Cloudflare Pages dashboard (project
codevetter). The workflow logs the deployment ID and status. -
Smoke-check the live site:
https://codevetter.comloads.https://codevetter.com/llms.txtand/api/aiare reachable (agent indexing surfaces).https://codevetter.com/sitemap-index.xmland/robots.txtare present.
Required secret
CLOUDFLARE_API_TOKENmust be set as a GitHub Actions secret. If the workflow fails at “Check Cloudflare deploy secrets”, the token is missing or expired — rotate it in the repo settings, not in code.
Common failures
- Build type error in
Footer.tsxor similar — fix the type error onmainand re-run. (This happened 2026-05-02; see knowledge/failed-approaches.md.) pnpm-lock.yamlout of sync — runpnpm installat root, commit the lockfile, push, then re-trigger. The May-2026 CF Pages outage was this.- Wrong output directory — the Astro site writes to
dist; the desktop Vite writes toout. Do not point Pages atapps/desktop.
Do not
- Do not auto-trigger landing deploys on push — keep them intentional.
- Do not deploy from a branch other than
mainunless explicitly coordinating a preview. - Do not strip the agent indexing surfaces (
llms.txt,/api/ai, JSON-LD) when editing the site.