Skip to main content

Deployment Workflow

Terra now uses a mainline release model: main is the source of truth, CI gates every change, and tags create human-readable GitHub releases.

Branch and Environment Model

Required CI Gates

Terra CI (.github/workflows/ci.yml) enforces:
  1. Build/typecheck
  2. ESLint
  3. Vitest suite
  4. No skipped Terra Playwright directives (check-terra-skipped-tests.mjs)
  5. Chromium public status smoke test
If any gate fails, do not merge.

Daily Development Flow

After merge, verify production health checks (status page, queue health, webhook errors) before starting the next release ticket.

Release Process (GitHub Releases)

Terra release automation lives in .github/workflows/release.yml.

Option A: Tag push (most direct)

If you need multiple releases on the same day, use a patch suffix:

Option B: Manual workflow dispatch

Use Actions → Release → Run workflow and provide:
  • tag (optional; auto-generates vYYYY.M.D if omitted) If vYYYY.M.D already exists, the workflow auto-selects vYYYY.M.D.1, .2, etc.
  • target (defaults to main)
  • prerelease (optional)
The workflow creates/pushes the tag if needed, then publishes a GitHub release with generated notes and appended plain-language summary context.

Rollback

If a bad change lands on production:
Then cut a new patch tag to document the rollback in release history.

Quick Commands


Testing

Test and quality gates

Contributing

Development guidelines