Skip to content

Deployment Reference

Most deploys run automatically via GitHub Actions — ci-cd.yml handles backend, and site-cf-pages.yml / web-cf-pages.yml deploy the two frontends to Cloudflare Pages. Commands below are for emergency manual use.

Backend — Cloud Run

cd apps/backend
gcloud run deploy vidyanet-backend --source . --project=vidyanet-prod --region=asia-south1 \
  --allow-unauthenticated \
  --set-secrets=DATABASE_URL=vidyanet-database-url:latest,GEMINI_API_KEY=vidyanet-gemini-api-key:latest \
  --add-cloudsql-instances=vidyanet-prod:asia-south1:vidyanet-postgres-prod

GitHub Actions Secrets (frontend CI)

Secret Used by Purpose
CLOUDFLARE_API_TOKEN site-cf-pages.yml, web-cf-pages.yml Wrangler Pages deploy auth
CLOUDFLARE_ACCOUNT_ID same CF account targeting
POSTHOG_CLI_TOKEN same (sourcemap upload step) PostHog project API key with sourcemaps:write scope — obtain from PostHog project Settings → API Keys

Frontends — Cloudflare Pages

Requires CLOUDFLARE_API_TOKEN + CLOUDFLARE_ACCOUNT_ID set locally.

# apps/site -> production
pnpm --filter @kwilo/site build
npx wrangler@3 pages deploy apps/site/dist --project-name=kwilo-site --branch=main

# apps/web -> production
pnpm --filter @kwilo/web build
npx wrangler@3 pages deploy apps/web/dist --project-name=kwilo-web --branch=main

Database Access (Production)

# Authorize your IP first
gcloud sql instances patch setuai-postgres --authorized-networks="YOUR_IP/32" --project=vidyanet-prod

# Connect
psql "host=34.180.20.117 dbname=vidyanet user=postgres"

Alembic Migrations

# Run pending migrations
cd apps/backend && alembic upgrade head

# Create new migration
cd apps/backend && alembic revision --autogenerate -m "describe the change"

# Check for pending
cd apps/backend && alembic check

# Rollback one
cd apps/backend && alembic downgrade -1

RAG Ingestion Job

gcloud run jobs execute vidyanet-rag-ingestion \
  --project=vidyanet-prod --region=asia-south1 \
  --update-env-vars="JOB_TYPE=gdrive:GDRIVE_ROOT_FOLDER_ID=<id>:BOARD=NCERT:RECURSIVE=true"

Backend Rollback

# List revisions
gcloud run revisions list --service=vidyanet-backend --project=vidyanet-prod --region=asia-south1

# Route traffic to a prior revision
gcloud run services update-traffic vidyanet-backend \
  --to-revisions=PREVIOUS_REVISION=100 \
  --project=vidyanet-prod \
  --region=asia-south1

Frontend Rollback (Cloudflare Pages)

Dashboard: Pages project → Deployments tab → "Rollback to this deployment" on a prior successful build. Instant.