Release Flow (Testnet & Mainnet)
Summary
- Develop → testnet
- Main → mainnet
This repo uses the release script to bump versions, build, deploy, and create Git tags automatically.
Tagging Policy
- Main (prod): annotated tag
vX.Y.Z - Develop (testnet): annotated tag
vX.Y.Z-testnet.N(N increments per version)
This avoids confusion and keeps production tags clean.
Release Script Behavior
Location: scripts/release.js
On every release:
- Run
pnpm exec versioning <level>to bump versions. - Create a tag based on the current branch:
develop→vX.Y.Z-testnet.Nmain/master→vX.Y.Z
- Build landing and dashboard.
- Optionally build docs and trigger docs Pages deployment (
--with-docs/--with-docs-deploy). - Sync landing build to the configured GCS bucket.
- Deploy dashboard to Cloud Run.
Docs Release Options
pnpm release -- --with-docs
pnpm release -- --with-docs-deploy
pnpm release:docs
pnpm release:docs:deploy
Docs deployment and DNS details are documented in Docs Pages Deployment.
Testnet vs Mainnet Version Enforcement
- Testnet releases require
developto include the latestmainhistory. - Production releases will fast-forward
developtomainwhen possible. - If branches have diverged, the release will fail with instructions to merge manually.
Testnet Dashboard (Cloud Build)
Config file: apps/dashboard/cloudbuild.testnet.yaml
Create a Cloud Build trigger:
- Repo: hashpass-tech/JACK
- Branch: develop
- Config:
apps/dashboard/cloudbuild.testnet.yaml
Landing (GCS Bucket)
The landing build is deployed to the bucket configured in .env.testnet for testnet and .env.production for prod.
Production Setup Checklist
- Create a production GCS bucket for landing (and enable static website hosting).
- Create a backend bucket + URL map that serves https://jack.lukas.money.
- Point DNS for
jack.lukas.moneyto the load balancer IP. - Create
.env.productionlocally (see.env.production.example). - Run release from
mainto publishvX.Y.Ztags and deploy mainnet.
Notes
- Keep secrets in CI/Cloud Build or Secret Manager; never commit them.
- If the public site shows stale assets, invalidate CDN cache for
/and/assets/*.