Release One-Page Flow + Checklist
Use this page during every release. It is designed for fast execution by humans under time pressure.
1) Flow (Simple View)
flowchart TD
A[Feature work in dev] --> B[Release candidate tested in staging]
B --> C[Merge approved candidate to main]
C --> D[Run create-release script]
D --> E[Push tag vX.Y.Z]
E --> F[Release workflow creates changelog + GitHub Release]
C --> G[CI on main completes successfully]
G --> H[Deploy Production workflow]
H --> I[Manual approval in GitHub Environment]
I --> J[Build + push API/Web images]
J --> K[Deploy to Coolify]
K --> L[Health + version verification]
2) Human Steps
- Merge approved release PR to
main. - Immediately tag that exact commit:
git checkout main
git pull origin main
./scripts/create-release.sh 1.2.3
- Watch these GitHub workflows:
CIDeploy to Production(manual approval required)Release
- Approve production deployment when ready.
- Verify production:
https://api.almafrica.com/healthhttps://api.almafrica.com/api/versionhttps://app.almafrica.com
3) Go/No-Go Checklist
Before Merge to main
- Staging validation completed for critical user flows
- Known issues documented and accepted
- Rollback impact reviewed (especially DB migrations)
Before Tagging
- You are on
main - Working tree is clean
- Local
mainis up to date withorigin/main - Correct semantic version chosen (
X.Y.ZorX.Y.Z-rc.1)
During Deploy
- CI finished successfully on
main - Production approval performed by authorized reviewer
- Coolify deployment calls returned success
After Deploy
- API health endpoint returns
200 - Web app responds normally
-
/api/versioncommit SHA matches expected commit - Smoke test: login + one critical business flow
4) If Something Goes Wrong
- Stop further approvals/releases.
- Decide: roll forward (preferred) or rollback.
- For DB rollback steps, use:
docs/runbooks/database-rollback.md
- For staging data process, use:
docs/runbooks/staging-data-copy.md
5) Important Current Limitations
- Production deploy is triggered by CI on
main, not directly by tag push. - If tag is late, deployment can use
prod-<sha>instead ofvX.Y.Z. - Pre-release tags (
-beta,-rc) are currently not hard-blocked from production path. - Mobile store release process is separate from this flow.
6) Team Roles (Quick)
- Developer: prepares candidate, validates changes, runs tag script.
- Reviewer/Lead: approves merge and production deployment.
- Ops/On-call: monitors health and drives rollback if needed.