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.