Pre-flight and post-deploy verification for Birkly CMS, Marketplace, and client sites (Phase 12 closure).
Use this checklist when promoting staging → production for the Birkly platform, marketplace, and reference client sites (for example kekaba). Automated smoke scripts cover health endpoints and admin login; human steps cover DNS, Stripe live mode, and legal copy.
Beginner
Before deploy
| Step | Owner | Action | |------|-------|--------| | 1 | Agent/CI | php tests/run.php green on Birkly main | | 2 | Agent/CI | Marketplace test suite green | | 3 | Human | Back up production content/, settings/, media/, marketplace data/ | | 4 | Human | Note current git commit SHA for rollback |
Birkly CMS deploy
- Pull latest
mainon the server (or run./scripts/deploy-pull.sh). - Ensure writable dirs:
content/,media/,settings/,data/,cache/,logs/. - Run smoke script:
./scripts/production-smoke.sh(or manual checks below). - Log in to admin; verify Commerce, Plugins → Marketplace, Settings → Security, and Settings → Monitoring load.
- Hit
GET /api/health.php— extended checks: disk writable, plugin state, marketplace reachability. Configure alert email in Monitoring before go-live (see Monitoring and health alerts).
Marketplace deploy
- Pull
Birkly-Marketplacemain. - Set production env: Stripe live keys,
GITHUB_APP_*, webhook secrets. - Register webhooks:
- GitHub App → POST /webhooks/github - Stripe → POST /webhooks/stripe
- Run marketplace smoke (registry
GET /api/v1/registry, provider login, catalog page). - See Marketplace production runbook.
Client site (kekaba example)
- From Birkly repo:
./scripts/sync-client-embed.sh /path/to/kekaba - In kekaba repo:
git pull origin main - Verify static pages load; Commerce buy buttons resolve.
- Do not commit runtime
content/,users/,settings/from server.
Human-only (cannot be automated)
- [ ] DNS / TLS certificates valid
- [ ] Stripe live mode enabled for Commerce and Marketplace Connect
- [ ] Legal pages updated (privacy, terms, marketplace provider agreement links)
- [ ] Email deliverability (SPF/DKIM) for dunning and order receipts
- [ ] Monitoring alerts configured
Post-deploy smoke (manual)
| Check | Expected | |-------|----------| | Admin login | /admin loads | | Commerce catalog | Products indexed | | Marketplace tab | Official plugins install | | Health endpoint | HTTP 200, checks pass | | Checkout (test) | Test mode order or small live transaction | | Subscriptions | List loads; upgrade UI on detail | | Plugin denylist | Add/remove test entry in Settings → Security |
Rollback
- Revert server git to previous SHA.
- Restore
settings/andcontent/from backup if schema changed. - Re-run smoke script.
Advanced Users
Smoke script locations
| Repo | Script | |------|--------| | Birkly | scripts/production-smoke.sh | | kekaba | scripts/check-production.sh (when present) |
Health extensions (P12-M5)
/api/health.php may include:
- Writable directories probe
- Active plugin manifest hash
- Marketplace registry HTTP probe (timeout 5s)
- PHP version and memory limit
CI publish (official plugins)
Tag plugin/commerce/v* on Birkly repo triggers GitHub Actions → build zip → marketplace registry API. Third-party providers use GitHub App connect (see Marketplace provider guide).
Embed sync
./scripts/sync-client-embed.sh ../kekaba
Copies Birkly-0.1/ embed without runtime data. Client sites serve static HTML; CMS runs on subdomain or path per hosting layout.
Secrets
Never commit: .env, config.php, settings/, Stripe keys, GitHub App PEM, import API tokens.