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
bashgit status --porcelain # Must be empty or only untracked files
- •
On Correct Branch
- •production:
mainormaster - •staging:
stagingorDEVELOPMENT - •qa:
qaorDEVELOPMENT
- •production:
- •
Tests Pass
bash# 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:
bash
# 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:
bash
# Using Vercel CLI vercel --prod # or for preview vercel
Docker Projects
agila-tax-management:
bash
# 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:
bash
cd bocs-serverless ./deployment.sh $ENVIRONMENT
Rollback Procedure
If deployment fails:
- •
Git Rollback
bashgit checkout $PREVIOUS_COMMIT
- •
Restart Services
bashsudo systemctl restart $SERVICE # or docker-compose -f docker-compose.$ENV.yml up -d
- •
Verify Rollback
bashcurl -f http://localhost:PORT/health
Post-Deployment
- •
Verify Health Endpoints
bashcurl http://localhost:PORT/health curl http://localhost:PORT/v1/health
- •
Check Logs for Errors
bashjournalctl -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
code
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]