Skip to content

Deployment Guide

All GOVERN deployments follow the same pattern: build locally → run typecheck and tests → deploy to the target. Never deploy without all checks passing.

Pre-deployment checklist

  • pnpm typecheck passes (zero errors)
  • pnpm test passes (all tests green)
  • Environment variables verified in Wrangler secrets or target platform
  • Migration scripts reviewed and tested on staging

Deploying the API gateway

expressiveCode.terminalWindowFallbackTitle
cd packages/api-gateway
pnpm typecheck
pnpm deploy

The API is deployed to Cloudflare Workers with zero downtime. Wrangler handles the rollout.

Deploying web applications

expressiveCode.terminalWindowFallbackTitle
# Deploy a single app
pnpm --filter @jarvis/govern-dashboard build
wrangler pages deploy packages/govern-dashboard/dist --project-name govern-dashboard
# Deploy all four apps
pnpm --filter @jarvis/govern-dashboard build && wrangler pages deploy packages/govern-dashboard/dist --project-name govern-dashboard
pnpm --filter @jarvis/govern-app build && wrangler pages deploy packages/govern-app/dist --project-name govern-app
pnpm --filter @jarvis/govern-admin build && wrangler pages deploy packages/govern-admin/dist --project-name govern-admin
pnpm --filter @jarvis/govern-customer build && wrangler pages deploy packages/govern-customer/dist --project-name govern-customer

Deploying documentation sites

expressiveCode.terminalWindowFallbackTitle
pnpm --filter @jarvis/govern-docs build
wrangler pages deploy packages/govern-docs/dist --project-name govern-docs
pnpm --filter @jarvis/govern-developer-docs build
wrangler pages deploy packages/govern-developer-docs/dist --project-name govern-developer-docs
pnpm --filter @jarvis/govern-admin-docs build
wrangler pages deploy packages/govern-admin-docs/dist --project-name govern-admin-docs

Running migrations

expressiveCode.terminalWindowFallbackTitle
cd packages/db
pnpm db:migrate

Always run migrations before deploying API gateway changes that depend on new schema.

Rollback

Cloudflare Workers and Pages retain deployment history. To roll back:

expressiveCode.terminalWindowFallbackTitle
# List recent deployments
wrangler deployments list
# Roll back to a specific deployment
wrangler rollback [deployment-id]