deployment-engineer

Charon-Fan's avatarfrom Charon-Fan

Deployment automation specialist for CI/CD pipelines and infrastructure. Use when setting up deployment, configuring CI/CD, or managing releases.

⭐1stars🔀1forks📁View on GitHub🕐Updated Jan 11, 2026

When & Why to Use This Skill

The Deployment Engineer skill is a specialized automation assistant designed to streamline CI/CD pipelines and infrastructure management. It empowers teams to automate the entire software release lifecycle, from initial pipeline configuration to complex deployment strategies, ensuring faster, more reliable, and repeatable delivery processes.

Use Cases

  • Setting up automated GitHub Actions or GitLab CI pipelines to handle linting, testing, building, and multi-stage deployments.
  • Implementing advanced deployment strategies such as Blue-Green, Rolling, or Canary releases to minimize downtime and mitigate release risks.
  • Configuring environment-specific variables and managing infrastructure-as-code to maintain consistency across development, staging, and production environments.
  • Establishing automated health checks and rapid rollback mechanisms to ensure high availability and system stability during new releases.
namedeployment-engineer
descriptionDeployment automation specialist for CI/CD pipelines and infrastructure. Use when setting up deployment, configuring CI/CD, or managing releases.
allowed-toolsRead, Write, Edit, Bash, Grep, Glob

Deployment Engineer

Specialist in deployment automation, CI/CD pipelines, and infrastructure management.

When This Skill Activates

Activates when you:

  • Set up deployment pipeline
  • Configure CI/CD
  • Manage releases
  • Automate infrastructure

CI/CD Pipeline

Pipeline Stages

stages:
  - lint
  - test
  - build
  - security
  - deploy-dev
  - deploy-staging
  - deploy-production

GitHub Actions Example

name: CI/CD

on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main]

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm ci
      - run: npm run lint

  test:
    runs-on: ubuntu-latest
    needs: lint
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
      - run: npm ci
      - run: npm test

  build:
    runs-on: ubuntu-latest
    needs: test
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
      - run: npm ci
      - run: npm run build
      - uses: actions/upload-artifact@v4
        with:
          name: build
          path: dist/

  deploy-production:
    runs-on: ubuntu-latest
    needs: build
    if: github.ref == 'refs/heads/main'
    environment: production
    steps:
      - uses: actions/checkout@v4
      - uses: actions/download-artifact@v4
        with:
          name: build
          path: dist/
      - run: npm run deploy

Deployment Strategies

1. Blue-Green Deployment

         ┌─────────┐
         │  Load   │
         │ Balancer│
         └────┬────┘
              │
     ┌────────┴────────┐
     │    Switch       │
     ├────────┬────────┤
     ▼        ▼        ▼
  ┌─────┐ ┌─────┐ ┌─────┐
  │Blue │ │Green│ │     │
  └─────┘ └─────┘ └─────┘

2. Rolling Deployment

┌─────────────────────────────────────┐
│ v1  v1  v1  v1  v1  v1  v1  v1  v1 │ → Old
│ v2  v2  v2  v2  v2  v2  v2  v2  v2 │ → New
└─────────────────────────────────────┘
    ▲                       ▲
    │                       │
  Start                  End

3. Canary Deployment

┌──────────────────────────────────────┐
│ v1  v1  v1  v1  v1  v1  v1  v1  v1  v1 │ → Old
│ v2  v2  v2  v2                        │ → Canary (5%)
└──────────────────────────────────────┘

Monitor metrics, then:
│ v1  v1  v1  v1                        │ → Old (50%)
│ v2  v2  v2  v2  v2  v2  v2  v2  v2  v2 │ → New (50%)

Environment Configuration

Environment Variables

# Production
NODE_ENV=production
DATABASE_URL=postgresql://...
API_KEY=sk-...
SENTRY_DSN=https://example.com/123

# Development
NODE_ENV=development
DATABASE_URL=postgresql://localhost:5432/dev

Configuration Management

// config/production.ts
export default {
  database: {
    url: process.env.DATABASE_URL,
    poolSize: 20,
  },
  redis: {
    url: process.env.REDIS_URL,
  },
};

Health Checks

// GET /health
app.get('/health', (req, res) => {
  const health = {
    status: 'ok',
    timestamp: new Date().toISOString(),
    checks: {
      database: 'ok',
      redis: 'ok',
      external_api: 'ok',
    },
  };

  if (Object.values(health.checks).some(v => v !== 'ok')) {
    health.status = 'degraded';
    return res.status(503).json(health);
  }

  res.json(health);
});

Rollback Strategy

# Kubernetes
kubectl rollout undo deployment/app

# Docker
docker-compose down
docker-compose up -d --scale app=<previous-version>

# Git
git revert HEAD
git push

Monitoring & Logging

Metrics to Track

  • Deployment frequency
  • Lead time for changes
  • Mean time to recovery (MTTR)
  • Change failure rate

Logging

// Structured logging
logger.info('Deployment started', {
  version: process.env.VERSION,
  environment: process.env.NODE_ENV,
  timestamp: new Date().toISOString(),
});

Scripts

Generate deployment config:

python scripts/generate_deploy.py <environment>

Validate deployment:

python scripts/validate_deploy.py

References

  • references/pipelines.md - CI/CD pipeline examples
  • references/kubernetes.md - K8s deployment configs
  • references/monitoring.md - Monitoring setup