mcpField
D
deployment-engineer

deployment-engineer

github.com/zhaono1云与 DevOps85676 次安装9 周前更新
代码仓库

关于 deployment-engineer

用于规划部署自动化、CI/CD 流水线、发布和基础设施配置的技能。它也明确生产变更的审批边界,并提供配置生成与验证脚本。

主要功能

  1. 01CI/CD 流水线规划
  2. 02蓝绿、滚动和金丝雀策略
  3. 03环境配置指导
  4. 04健康检查与回滚示例
  5. 05部署配置生成与验证

适用场景

  1. 01规划发布流水线
  2. 02选择部署策略
  3. 03检查部署配置
  4. 04准备回滚方案与健康检查

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/zhaono1/agent-playbook --skill deployment-engineer

安装后在 Claude Code 中输入/deployment-engineer确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
references/
kubernetes.md
monitoring.md
pipelines.md
scripts/
generate_deploy.py
validate_deploy.py

详细介绍

部署工程师

专注于部署自动化、CI/CD 流水线和基础设施管理。

权限边界

规划、生成配置和执行只读验证,并不代表获准部署。未经用户针对具体操作和目标的明确批准,绝不可推送、部署、回滚、变更生产基础设施或更改远程发布状态。 在执行已获批准的变更前,说明环境、命令、预期影响、验证信号和回滚路径。如果目标或授权不明确,请停止。

此技能的触发条件

在以下情况下触发:

  • 设置部署流水线
  • 配置 CI/CD
  • 管理发布
  • 自动化基础设施

CI/CD 流水线

流水线阶段
stages:
  - lint
  - test
  - build
  - security
  - deploy-dev
  - deploy-staging
  - deploy-production
GitHub Actions 示例
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

部署策略

1. 蓝绿部署
         ┌─────────┐
         │  Load   │
         │ Balancer│
         └────┬────┘
              │
     ┌────────┴────────┐
     │    Switch       │
     ├────────┬────────┤
     ▼        ▼        ▼
  ┌─────┐ ┌─────┐ ┌─────┐
  │Blue │ │Green│ │     │
  └─────┘ └─────┘ └─────┘
2. 滚动部署
┌─────────────────────────────────────┐
│ v1  v1  v1  v1  v1  v1  v1  v1  v1 │ → Old
│ v2  v2  v2  v2  v2  v2  v2  v2  v2 │ → New
└─────────────────────────────────────┘
    ▲                       ▲
    │                       │
  Start                  End
3. 金丝雀部署
┌──────────────────────────────────────┐
│ 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%)

环境配置

环境变量
# Production
NODE_ENV=production
DATABASE_URL=postgresql://...
API_KEY=${API_KEY}
SENTRY_DSN=https://example.com/123

# Development
NODE_ENV=development
DATABASE_URL=postgresql://localhost:5432/dev
配置管理
// config/production.ts
export default {
  database: {
    url: process.env.DATABASE_URL,
    poolSize: 20,
  },
  redis: {
    url: process.env.REDIS_URL,
  },
};

健康检查

// 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);
});

回滚策略

# Kubernetes
kubectl rollout undo deployment/app

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

# Git
git revert HEAD
git push

监控与日志记录

跟踪指标
  • 部署频率
  • 变更前置时间
  • 平均恢复时间(MTTR)
  • 变更失败率
日志记录
// Structured logging
logger.info('Deployment started', {
  version: process.env.VERSION,
  environment: process.env.NODE_ENV,
  timestamp: new Date().toISOString(),
});

脚本

生成部署配置:

python3 scripts/generate_deploy.py --env <environment> --name <service-name>

验证部署:

python3 scripts/validate_deploy.py --input deploy-plan.md

参考资料

  • references/pipelines.md - CI/CD 流水线示例
  • references/kubernetes.md - K8s 部署配置
  • references/monitoring.md - 监控设置

评论

支持 Markdown