Automated Deployment
Deploy applications with pre-deployment checks, health validation, and automatic rollback on failure.
Arguments
$0: Environment -production,staging,qa,development(required)
Pre-Deployment Checklist
Before deploying, verify:
-
Git Status Clean
git status --porcelain # Must be empty or only untracked files -
On Correct Branch
- production:
mainormaster - staging:
stagingorDEVELOPMENT - qa:
qaorDEVELOPMENT
- production:
-
Tests Pass
# Run test suite first /test all -
Environment Variables
- Check
.env.$ENVIRONMENTexists - Validate required variables are set
- Check
Deployment Strategies by Project
FastAPI Projects (IONOS VPS)
eruditiontx-services-mvp, mathmatterstx-services:
# 1. Connect to server
ssh user@server
# 2. Pull latest code
cd /path/to/project
git pull origin $BRANCH
# 3. Install dependencies
uv sync
# 4. Run migrations (if any)
uv run alembic upgrade head
# 5. Restart service
sudo systemctl restart erudition-service
# 6. Health check
curl -f http://localhost:8000/health || exit 1
# 7. Verify logs
journalctl -u erudition-service -n 20 --no-pager
Next.js Projects (Vercel)
bocs-turbo apps, naiomi-frontend:
# Using Vercel CLI
vercel --prod
# or for preview
vercel
Docker Projects
agila-tax-management:
# 1. Build new image
docker-compose -f docker-compose.$ENV.yml build
# 2. Stop old containers
docker-compose -f docker-compose.$ENV.yml down
# 3. Start new containers
docker-compose -f docker-compose.$ENV.yml up -d
# 4. Health check
docker-compose -f docker-compose.$ENV.yml ps
curl -f http://localhost:PORT/health
AWS Lambda (Serverless)
bocs-serverless:
cd bocs-serverless
./deployment.sh $ENVIRONMENT
Rollback Procedure
If deployment fails:
-
Git Rollback
git checkout $PREVIOUS_COMMIT -
Restart Services
sudo systemctl restart $SERVICE # or docker-compose -f docker-compose.$ENV.yml up -d -
Verify Rollback
curl -f http://localhost:PORT/health
Post-Deployment
-
Verify Health Endpoints
curl http://localhost:PORT/health curl http://localhost:PORT/v1/health -
Check Logs for Errors
journalctl -u $SERVICE -n 50 --no-pager | grep -i error # or docker logs $CONTAINER --tail 50 -
Send Notification (if configured)
- Slack webhook
- Email notification
Output Format
Deployment: [project-name]
Environment: [production/staging/qa]
Branch: [branch-name]
Commit: [short-hash]
Pre-checks:
Git status: CLEAN
Branch: CORRECT
Tests: PASSED
Env vars: VALIDATED
Deploying...
[Deployment output]
Post-deployment:
Health check: PASSED
Service status: RUNNING
Deployment completed successfully!
URL: [deployed-url]
