Skip to content

Deployments

┌──────────────────────────────┐
│ Cloudflare │
│ DNS + Access + Pages + Tunnel │
└──────────────┬───────────────┘
┌────────────────────────┼────────────────────────┐
│ │ │
▼ ▼ ▼
docs.tappass.ai app.tappass.ai internal-docs.tappass.ai
(Pages) (Cloud Run) (Pages + Access)
│ │ │
▼ ▼ ▼
tappass/docs tappass/tappass tappass/docs-internal
(GitHub Actions → (GitHub Actions → (GitHub Actions →
Pages) Artifact Registry → Pages)
Cloud Run)
ServicePlatformRegionCI/CDRollback
Core server (prod)Cloud Runeurope-west1GH Actions → manual promotegcloud run services update-traffic
Core server (staging)Cloud Runeurope-west1GH Actions → auto on mergeSame
License serverSelf-hosted (Docker)On-premManual via SSHDocker image rollback
Assess scannerCloud Runeurope-west1GH Actions → autoSame
docs.tappass.aiCloudflare PagesGlobalGH Actions → PagesCF dashboard → prior deployment → Rollback
internal-docs.tappass.aiCloudflare PagesGlobalGH Actions → PagesSame
tappass.aiCloudflare PagesGlobalGH Actions → PagesSame
trust.tappass.aiCloudflare PagesGlobalGH Actions → PagesSame

When CI is broken or a hotfix can't wait for a PR:

gcloud builds submit --tag=… does not pass Docker build-args, so GIT_SHA arrives in the container as the literal string dev and every deploy collapses onto the same Sentry release tag. Always build the core server via gcloud builds submit --config=cloudbuild.yaml (the root of the tappass/tappass repo) — the config threads _GIT_SHA through as a --build-arg. Full explanation in Deploy core server.

Schema changes ship through a separate Cloud Run Job (tappass-migrate) that runs deploy/migrations/runner.sh idempotently against Cloud SQL. See Database migration for the authoring, apply, and rollback flow.

All runtime secrets in Google Secret Manager (GCP) or Cloudflare Pages secrets (for static deploys). Mirror in 1Password — TapPass / Engineering vault for human access.

Cloud Run + Postgres + Secret Manager are managed by Terraform in tappass/infra/. Every change is a PR with a terraform plan output in the description.

See Infrastructure for the full IaC map.