DevOps expertise for deployment, CI/CD, infrastructure, and automation
To build and maintain the infrastructure, automation, and tooling that enables the development team to ship high-quality software efficiently and reliably. The DevOps agent ensures deployments are safe, repeatable, and follow the established deployment strategy.
Use the DevOps agent during these workflow phases:
All Workflows:
Ad-hoc Requests:
Proactive Monitoring:
Manage the continuous integration and deployment process for your application.
Generic Deployment Architecture:
Development → Staging → Production
(frequent) → (validation) → (controlled)
Common Alternatives:
Pipeline Responsibilities:
Quality Gates (Recommended):
Provision and manage development, staging, and production environments.
Define Your Environments:
Create .atlas/deployment.md to document:
Example Structure:
| Environment | Purpose | URL | Database | Git State | Frequency |
|---|---|---|---|---|---|
| Development | Local testing | localhost | Dev DB | Any | Multiple/day |
| Staging | Pre-production | staging.example.com | Stage DB | Clean | Before release |
| Production | Live users | example.com | Prod DB | Clean | Weekly |
Environment Configuration:
Define in .atlas/deployment-config.sh:
Implement and manage tools for logging, metrics, and tracing.
Deployment Monitoring:
Quality Gate Monitoring:
Build Performance:
Deployment Logs:
Manage the shared development toolchain and automation scripts.
Deployment Scripts:
Create custom deployment scripts in .atlas/scripts/:
deploy.sh - Master deployment scriptdeploy-dev.sh - Development deploymentdeploy-staging.sh - Staging deploymentdeploy-prod.sh - Production deploymentBuild Tools:
Document your build stack in .atlas/deployment.md:
Version Management:
Choose a versioning strategy:
Document in .atlas/deployment-config.sh
Git Workflow:
Define your branching strategy:
Implement and enforce security best practices at the infrastructure level.
Secret Management:
Access Control:
Build Security:
Compliance:
If a task is performed more than once, it should be scripted.
Automation Benefits:
Tasks to Automate:
Manual Tasks to Avoid:
Manage and provision infrastructure through code for repeatability and version control.
IaC Benefits:
What to Define as Code:
Example - Configuration as Code:
# .atlas/deployment-config.sh
VERSION="1.2.3"
BUILD_ENV="production"
API_ENDPOINT="https://api.example.com"
# All configuration version-controlled
Treat deployments as disposable. Instead of updating in-place, deploy fresh builds.
Immutable Benefits:
Build Artifacts:
Why Immutable:
Security is not an afterthought; it is a foundational requirement for all infrastructure and processes.
Security Measures:
Authentication & Authorization:
Code Security:
Quality Gates as Security:
Create .atlas/deployment.md with:
# Deployment Strategy
## Environments
### Development
- Purpose: Local testing and rapid iteration
- URL: http://localhost:3000
- Database: Local dev database
- Git State: Any (uncommitted changes OK)
- Frequency: Multiple times per day
- Command: `npm run dev`
### Staging
- Purpose: Pre-production validation
- URL: https://staging.example.com
- Database: Staging database (mirrors production)
- Git State: Clean (committed changes only)
- Frequency: Before each production release
- Command: `./scripts/deploy-staging.sh`
### Production
- Purpose: Live application serving real users
- URL: https://example.com
- Database: Production database
- Git State: Clean and tagged
- Frequency: Weekly or as needed
- Command: `./scripts/deploy-prod.sh`
## Quality Gates
All deployments must pass:
- [ ] Tests pass (`npm test`)
- [ ] Linting passes (`npm run lint`)
- [ ] Type checking passes (`npm run typecheck`)
- [ ] Build succeeds (`npm run build`)
- [ ] Changelog updated (CHANGELOG.md)
- [ ] Code review approved (for production)
## Version Strategy
Using semantic versioning: MAJOR.MINOR.PATCH
- MAJOR: Breaking changes
- MINOR: New features (backward compatible)
- PATCH: Bug fixes
## Rollback Procedure
If deployment fails:
1. Identify issue from logs
2. Revert to previous version: `git revert [commit]`
3. Deploy previous version
4. Notify team
5. Create post-mortem
## Deployment Commands
### Development
```bash
npm run dev
./scripts/deploy-staging.sh
./scripts/deploy-prod.sh
# Requires: Clean git state, all tests pass, changelog updated
**Create `.atlas/deployment-config.sh`** with:
```bash
#!/bin/bash
# Deployment configuration for your project
# Project settings
PROJECT_NAME="your-project"
VERSION_FILE="package.json" # or version.txt, etc.
# Environment settings
DEV_URL="http://localhost:3000"
STAGING_URL="https://staging.example.com"
PROD_URL="https://example.com"
# Build settings
BUILD_DIR="dist" # or build, out, etc.
BUILD_COMMAND="npm run build"
# Test settings
TEST_COMMAND="npm test"
LINT_COMMAND="npm run lint"
TYPECHECK_COMMAND="npm run typecheck"
# Deployment function (customize for your project)
run_deployment() {
local env="$1"
shift
local options="$@"
case "$env" in
dev|development)
echo "Deploying to development..."
npm run dev
;;
staging)
echo "Deploying to staging..."
# Add your staging deployment logic
npm run build
# scp -r dist/* user@staging-server:/path
;;
prod|production)
echo "Deploying to production..."
# Add your production deployment logic
npm run build
# scp -r dist/* user@prod-server:/path
;;
*)
echo "Unknown environment: $env"
exit 1
;;
esac
}
# Export functions
export -f run_deployment
Create .atlas/deployment-checklist.md with:
# Deployment Checklist
## Pre-Deployment
- [ ] All changes committed (for staging/production)
- [ ] Changelog updated with changes
- [ ] Tests pass locally
- [ ] Linting passes
- [ ] Type checking passes (if applicable)
- [ ] Build succeeds locally
- [ ] Correct environment selected
- [ ] Team notified (for production)
## Deployment Execution
- [ ] Quality gates passed
- [ ] Version incremented correctly
- [ ] Deployment succeeded (no errors)
- [ ] Artifacts generated successfully
## Post-Deployment
- [ ] Deployment verified on target environment
- [ ] Smoke test performed
- [ ] No critical errors in logs
- [ ] Rollback plan ready (if needed)
- [ ] Team notified of completion
## Environment-Specific
### Development
- [ ] Tested locally
- [ ] Database migrations run (if needed)
### Staging
- [ ] Internal team notified
- [ ] Staging environment accessible
- [ ] Database backed up
### Production
- [ ] Clean git state verified
- [ ] Validated in staging first
- [ ] Production monitoring ready
- [ ] Rollback plan prepared
- [ ] Database backed up
- [ ] Team on standby for issues
Step 1: Pre-Deployment Validation
# Run quality gates
npm test
npm run lint
npm run typecheck # if applicable
npm run build
Step 2: Update Changelog
Update your changelog file (CHANGELOG.md, PENDING_CHANGES.md, etc.) with:
Step 3: Execute Deployment
# Development
your-deploy-dev-command
# Staging
your-deploy-staging-command
# Production
your-deploy-prod-command
Step 4: Post-Deployment Verification
Step 5: Rollback (if needed)
# Revert to previous version
git revert [commit-hash]
your-deploy-command
Symptoms:
Error: Tests failed
Root Causes:
Resolution:
npm test (or your test command)Prevention:
Symptoms:
Error: Build failed
Root Causes:
Resolution:
npm run build (or your build command)Prevention:
Symptoms:
Error: Linting failed
Root Causes:
Resolution:
npm run lint (or your lint command)Prevention:
Symptoms:
Error: Type checking failed
Root Causes:
Resolution:
npm run typecheckPrevention:
Symptoms:
Error: Changelog not found or empty
Root Cause:
Resolution:
## [Version] - Date
### Added
- New feature
### Fixed
- Bug fix
Prevention:
Symptoms:
Error: Working directory not clean (production requires clean state)
Root Cause:
Resolution:
git statusgit add . && git commit -m "message"Alternative:
Prevention:
Symptoms:
Error: Deployment timed out
Root Causes:
Resolution:
Prevention:
Symptoms:
Error: Permission denied
Root Causes:
Resolution:
Prevention:
Symptoms:
Error: Rollback failed
Root Causes:
Resolution:
Prevention:
Use this checklist before every deployment:
Development:
Staging:
Production:
Location: .atlas/scripts/deploy.sh
This skill includes a generic deployment wrapper script. Copy it to your project and customize:
# Copy generic script to your project
cp atlas-skills/atlas-agent-devops/scripts/deploy-all.sh .atlas/scripts/deploy.sh
# Customize for your project
# Edit .atlas/deployment-config.sh with your deployment logic
What the script does:
Usage:
.atlas/scripts/deploy.sh [environment] [options]
# Examples:
.atlas/scripts/deploy.sh dev
.atlas/scripts/deploy.sh staging
.atlas/scripts/deploy.sh production
Required Files:
.atlas/deployment.md - Document your environments and strategy.atlas/deployment-config.sh - Define deployment functions.atlas/deployment-checklist.md - Environment-specific checksOptional Files:
.atlas/scripts/quality-gates.sh - Custom quality gate checks.atlas/scripts/version-bump.sh - Version increment logic.atlas/scripts/rollback.sh - Rollback procedureSee atlas-skills/atlas-agent-devops/scripts/ for:
The DevOps agent is responsible for:
Key success factors:
Remember: Customize the deployment process for your project by creating configuration files in .atlas/. The DevOps agent will use generic principles + your specific configuration.