Skip to content

Deployment

  • Cloudflare account dedicated to graphdb-labs (API token + account ID via GitHub org secrets)
  • Reusable workflows from graphdb-labs/ops-ci-workflows
  • Never run local wrangler deploy or wrangler secret put against production
ServiceTypeRepo / pathCloudflare name
core-apiWorkercorecore-api
edge-gatewayWorkeredge-gatewayedge-gateway
ops-controlWorker (cron)ops-controlops-control
infra-emailWorkerinfra-emailinfra-email
web-publicPagesweb-publicweb-public
app-dashboardPagesapp-dashboardapp-dashboard
core-adminPagescore/apps/admin-webcore-admin
ResourceNameNotes
D1core-d1Shared by core-api / ops-control
R2core-r2Backups / assets (enable R2 on the account first)

Do not create graphdb-labs-*-prod, admin-db, core-admin-api, or non-prod *-dev / *-stg resources.

Resource creation (D1/R2) is an ops action with STOP-AND-ASK for new D1. IDs are pinned in each repo’s wrangler.prod.toml / wrangler.prod.jsonc.

Each product repo’s .github/workflows/ci.yml calls ops-ci-workflows with secrets: inherit:

  1. Governance + TypeScript CI on PR / push
  2. Deploy Workers/Pages on main (or workflow_dispatch) via reusable deploy workflows
  3. Preflight (preflight-cloudflare.mjs) before any Cloudflare write
SecretDescription
CLOUDFLARE_API_TOKENToken scoped to the graphdb-labs Cloudflare account
CLOUDFLARE_ACCOUNT_IDMust match pinned account_id in wrangler configs

See ops-ci-workflows/docs/ORG_SECRETS.md for the full list.