Skip to content

Release Process

import { Steps, Aside } from ‘@astrojs/starlight/components’;

Promotion Pipeline

feature/* ──PR──► develop ──PR──► staging ──PR──► main
│ │ │
Preview Staging Production
(Vercel) staging.brettjohnson.xyz brettjohnson.xyz

Standard Feature Release

1. **Branch from develop**
Terminal window
git checkout develop && git pull origin develop
git checkout -b feature/my-feature
git commit -m "feat(www): add speaking services grid"
git push -u origin feature/my-feature
  1. Open PR → develop

    Requirements before merge:

    • All CI checks pass (lint, type-check, test, build)
    • Vercel preview deploy is functional
  2. Promote to staging (PR: develop → staging)

    Staging CI adds:

    • Playwright E2E test suite
    • Lighthouse audit (scores must be ≥ 90)
  3. Promote to production (PR: staging → main)

    On merge:

    • Full CI runs
    • semantic-release determines version from commit history
    • GitHub Release created
    • Vercel deploys to brettjohnson.xyz

Hotfix Release

Terminal window
git checkout main && git pull origin main
git checkout -b hotfix/broken-booking-form
git commit -m "fix(api): correct Zod schema for budget field"
git push -u origin hotfix/broken-booking-form
# Open PR: hotfix → main
# Open PR: hotfix → develop

Emergency Rollback

Option 1: Vercel Instant Rollback (preferred, < 60s)

  1. Vercel dashboard → Deployments
  2. Find last known-good deployment
  3. Click “Promote to Production”

Option 2: Git Revert

Terminal window
git checkout main
git revert <bad-commit-hash> --no-edit
git push origin main

Pre-Launch Checklist (v1.0.0)

  • Brett has approved all copy
  • All 8 milestones complete in ROADMAP.md
  • Lighthouse ≥ 90 on all pages (mobile + desktop)
  • securityheaders.com grade: A+
  • All forms tested end-to-end
  • Media kit download works (email receipt + signed URL)
  • Calendly embed loads on /contact
  • sitemap.xml and robots.txt verified
  • Domain cutover confirmed with Cloudflare

See Deployment Runbook for step-by-step DNS cutover instructions.