76 lines
2.7 KiB
Markdown
76 lines
2.7 KiB
Markdown
# 14. Automated Deployment Pipeline
|
|
|
|
meta:
|
|
id: web-production-14
|
|
feature: web-production
|
|
priority: P1
|
|
depends_on: [web-production-13, web-production-15, web-production-16]
|
|
tags: [cicd, deployment, production]
|
|
|
|
objective:
|
|
- Build automated deployment pipelines for staging and production environments with rollback capability
|
|
|
|
deliverables:
|
|
- Staging deployment on merge to main
|
|
- Production deployment with manual approval
|
|
- Database migration automation
|
|
- Rollback strategy
|
|
|
|
steps:
|
|
1. Create .github/workflows/deploy-staging.yml:
|
|
- Trigger on push to main
|
|
- Build web application
|
|
- Run database migrations (drizzle-kit push)
|
|
- Deploy to staging environment (Vercel, Railway, or VPS)
|
|
- Run smoke tests against staging
|
|
2. Create .github/workflows/deploy-production.yml:
|
|
- Trigger on release published or manual dispatch
|
|
- Require manual approval from 1 team member
|
|
- Build and tag Docker image
|
|
- Run database migrations in dry-run first
|
|
- Deploy to production with blue-green or rolling strategy
|
|
- Run post-deploy smoke tests
|
|
3. Implement database migration safety:
|
|
- Migrations run before app deployment
|
|
- Backward-compatible migrations only (add columns, don't drop)
|
|
- Migration rollback script for each migration
|
|
- Database backup before production migration
|
|
4. Add deployment notifications:
|
|
- Slack notification on deploy start, success, failure
|
|
- Include commit SHA, author, and changelog
|
|
5. Implement rollback:
|
|
- One-click rollback to previous release
|
|
- Database migration rollback (if safe)
|
|
- CDN cache purge on rollback
|
|
6. Add smoke tests:
|
|
- Test homepage loads
|
|
- Test login API responds
|
|
- Test health endpoint
|
|
- Test critical user journey with Playwright
|
|
|
|
tests:
|
|
- Integration: Deploy to staging, verify app functional
|
|
- Rollback: Trigger rollback, verify previous version restored
|
|
- Migration: Test migration failure doesn't break deployment
|
|
|
|
acceptance_criteria:
|
|
- Every merge to main auto-deploys to staging
|
|
- Production deploy requires manual approval
|
|
- Database migrations run automatically before app start
|
|
- Rollback completes in <5 minutes
|
|
- Smoke tests pass before marking deploy successful
|
|
- Deployment notifications sent to Slack
|
|
- Zero-downtime deployment for web app
|
|
|
|
validation:
|
|
- Merge PR → staging deploys automatically within 5 minutes
|
|
- Trigger production deploy → approval gate shown
|
|
- Approve → production deploys, smoke tests pass
|
|
- Introduce bug → rollback to previous version in <5 minutes
|
|
|
|
notes:
|
|
- Vercel offers automatic preview deployments per PR
|
|
- For VPS deployment, use Docker Compose with rolling restart
|
|
- Consider using GitHub Environments for approval gates
|
|
- Database migrations should be additive-only in production
|