Release Process
How we ship code to production safely and efficiently.
Search results
Release Philosophy
We practice continuous deployment with safety guardrails. Code that passes all checks is automatically deployed to production.
Environments
Development: Local environment for active development
Staging: Production-like environment for final testing
Production: Customer-facing environment
Release Flow
1. Development
Create Branch: From main using naming convention
- Feature:
feature/description - Bug:
fix/description - Hotfix:
hotfix/description
Write Code:
- Follow style guide
- Write tests
- Update documentation
Test Locally: Ensure all tests pass
2. Create Merge Request
MR Requirements:
- Descriptive title and description
- Link to related issue
- Screenshots/video if UI changes
- All CI checks passing
- At least one approval required
Template:
## What
[Brief description of changes]
## Why
[Business context and motivation]
## How to Test
[Steps to verify the changes]
## Screenshots
[If applicable]
## Checklist
- [ ] Tests added/updated
- [ ] Documentation updated
- [ ] No breaking changes (or documented migration path)
- [ ] Changelog entry added
3. Code Review
Review Criteria:
- Code quality and maintainability
- Test coverage
- Security implications
- Performance impact
- Documentation completeness
Review SLA: First review within 4 hours during business hours
Approval: Requires one approval from another engineer
4. Merge to Main
Auto-Deploy: Merging to main triggers deployment pipeline
Pipeline Stages:
- Lint: Code style checks
- Test: Unit and integration tests
- Build: Create deployable artifacts
- Deploy to Staging: Automatically deployed
- Smoke Tests: Automated tests on staging
- Deploy to Production: Automatically if staging passes
- Production Smoke Tests: Verify production health
5. Monitor
Post-Deploy Monitoring (15 minutes):
- Check error rates in Sentry
- Monitor application metrics
- Watch for increased support tickets
- Verify in production
On-Call Engineer: Notified of all production deployments
Release Cadence
Typical: Multiple deployments per day
Minimum: Deploy at least daily during business hours
Feature Flags: Use for large features to decouple deployment from release
Rollback Process
If a deployment causes issues:
Quick Rollback
Automatic: Production smoke tests failing triggers auto-rollback
Manual: On-call engineer can trigger rollback via Slack command:
/deploy rollback [service-name]
Full Rollback Steps
- Trigger Rollback: Reverts to previous deployment
- Notify Team: Post in #engineering
- Create Incident: Document in incident tracker
- Fix Forward: Create hotfix or revert MR
- Post-Incident Review: Schedule incident review
Hotfixes
For urgent production issues:
Process:
- Create
hotfix/*branch frommain - Make minimal fix
- Fast-track review (can be reviewed post-merge in emergency)
- Deploy following normal pipeline
- Follow up with incident review
When to Hotfix:
- Production is down
- Data loss or corruption
- Security vulnerability
- Critical customer impact
Feature Flags
We use feature flags to control feature rollout independently of deployment.
Types:
Release Flags: Enable features for gradual rollout
Ops Flags: Kill switches for problematic features
Permission Flags: Enable features for specific customers
Experiment Flags: A/B testing
Best Practices:
- Clean up flags after full rollout
- Document flag purpose and owner
- Set expiration dates
Database Migrations
Backward Compatible: All migrations must be backward compatible
Process:
- Deploy compatible code without migration
- Run migration separately
- Deploy code that depends on migration
- Remove old code after migration is complete
Review Requirements: All migrations require database review
Changelog
Maintain a changelog for each release:
Format: Follow Keep a Changelog
Categories:
- Added: New features
- Changed: Changes to existing functionality
- Deprecated: Soon-to-be removed features
- Removed: Removed features
- Fixed: Bug fixes
- Security: Security fixes
Release Communication
Internal: Post in #engineering when features ship
External:
- Product changelog for customer-facing features
- Email notifications for breaking changes
- Blog posts for major features
Deployment Windows
Preferred: Tuesday-Thursday, 10am-4pm PT
Avoid:
- Fridays after 2pm
- Weekends (except hotfixes)
- Major holidays
- During known high-traffic periods
Override: On-call lead can approve off-hours deploys if needed
Last modified October 21, 2025: Fix: Amazon Music Automation (Wiim/Linkplay) (8f80bf4)