Step 2 · Release
Goal
Cut the release, deploy to production, and confirm the system is healthy.
Instructions
You are in workflow step 2 of the release-cycle. Pre-release checks have passed. Now ship it.
Tasks to Perform
1. Determine the Version Number
Based on the changes in this release:
- Bug fixes only → bump PATCH:
1.2.3 → 1.2.4 - New features, backward compatible → bump MINOR:
1.2.3 → 1.3.0 - Breaking changes → bump MAJOR:
1.2.3 → 2.0.0
# Confirm the previous version
git tag -l --sort=-creatordate | head -3
2. Update CHANGELOG.md
Change ## [Unreleased] to the version being released:
## [1.3.0] — 2026-03-28
### Added
- [Feature name]: description of what users can now do
### Changed
- [What changed]: how behaviour is different
### Fixed
- [Bug description]: what was wrong and is now corrected
### Security
- Updated [package] to address CVE-XXXX-XXXX
3. Commit the Release
git add CHANGELOG.md
git commit -m "chore: release v1.3.0"
4. Tag the Release
git tag -a v1.3.0 -m "Release v1.3.0"
git push origin main
git push origin v1.3.0
5. Run Database Migrations
If this release includes database migrations:
# Run on staging first, verify, then production
# Staging:
[migration command] --env=staging
# Verify staging is healthy after migration
curl -s https://staging.app/health/ready | head -5
# Production (only after staging is verified):
[migration command] --env=production
⚠️ If a migration fails in production, do NOT proceed with the code deploy. Restore the database to pre-migration state before proceeding.
6. Deploy the Application
Trigger the deployment pipeline:
# If using a CI/CD system, trigger via tag push (done in step 4)
# If deploying manually:
[deployment command] --version=v1.3.0
7. Monitor Deployment Progress
Watch for:
- [ ] Build succeeds
- [ ] Deploy succeeds
- [ ] Health check
GET /health/readyreturns 200 - [ ] No error spike in the first 5 minutes
# Monitor error rate during and after deploy
tail -f [production log] | grep "ERROR\|WARN" &
# Tail health check
watch -n 5 "curl -s https://app/health/ready"
8. Post-Deploy Smoke Test
Immediately after deployment, manually verify the critical paths work:
- [ ] Application loads (HTTP 200 on main page or root API)
- [ ] Login works
- [ ] The primary new feature in this release is accessible
- [ ] Any fixed bugs are confirmed fixed
Rollback Procedure
If the deployment fails or causes errors:
# Option A: Revert via deployment platform to previous version
[platform-specific rollback]
# Option B: Revert the git commit and redeploy
git revert HEAD
git push origin main
[re-trigger deployment]
# Option C: Emergency patch
git checkout -b hotfix/v1.3.1
# make the minimal fix
# follow the expedited release process
After rollback:
- Verify health check is green
- Confirm error rate is back to baseline
- Document what went wrong in a post-mortem issue
- Fix the issue before re-attempting the release
Exit Criteria
This step is complete when:
- [ ] Version tag exists in git
- [ ] CHANGELOG.md updated
- [ ] Code deployed to production
- [ ] All health checks green
- [ ] No elevated error rate 10 minutes post-deploy
- [ ] Smoke tests passing
- [ ] Ready to proceed to Step 3 (Post-Release)