关于 deployment-engineer
用于规划部署自动化、CI/CD 流水线、发布和基础设施配置的技能。它也明确生产变更的审批边界,并提供配置生成与验证脚本。
主要功能
- 01CI/CD 流水线规划
- 02蓝绿、滚动和金丝雀策略
- 03环境配置指导
- 04健康检查与回滚示例
- 05部署配置生成与验证
适用场景
- 01规划发布流水线
- 02选择部署策略
- 03检查部署配置
- 04准备回滚方案与健康检查
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ zhaono1/ agent-playbook --skill deployment-engineer安装后在 Claude Code 中输入/deployment-engineer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdreferences/kubernetes.mdmonitoring.mdpipelines.mdscripts/generate_deploy.pyvalidate_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