关于 deployment-pipeline-design
用于设计多阶段 CI/CD 流水线的指导技能,涵盖审批关卡、部署策略、验证与回滚,适合规划部署流程的团队。它强调在生产环境发布前核验构建产物和运行状态。
主要功能
- 01多阶段流水线设计
- 02审批关卡模式
- 03滚动、蓝绿与金丝雀策略
- 04构建产物与发布验证
- 05回滚规划
适用场景
- 01设计 CI/CD 架构
- 02配置从预发布到生产的审批关卡
- 03规划渐进式部署
- 04制定发布检查与回滚条件
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill deployment-pipeline-design安装后在 Claude Code 中输入/deployment-pipeline-design确认已加载。
详细介绍
部署流水线设计
适用于多阶段 CI/CD 流水线的架构模式,包括审批关卡和部署策略。
以下情况请勿使用此技能
- 任务与部署流水线设计无关
- 需要使用范围之外的其他领域或工具
说明
- 明确目标、约束和所需输入。
- 应用相关最佳实践并验证结果。
- 提供可执行的步骤和验证方法。
目的
设计稳健、安全的部署流水线,通过恰当的阶段组织和审批工作流,在速度与安全性之间取得平衡。
适用场景
- 设计 CI/CD 架构
- 实施部署关卡
- 配置多环境流水线
- 建立部署最佳实践
- 实施渐进式交付
流水线阶段
标准流水线流程
┌─────────┐ ┌──────┐ ┌─────────┐ ┌────────┐ ┌──────────┐
│ Build │ → │ Test │ → │ Staging │ → │ Approve│ → │Production│
└─────────┘ └──────┘ └─────────┘ └────────┘ └──────────┘
阶段详细说明
- 源代码 - 检出代码
- 构建 - 编译、打包、构建容器
- 测试 - 单元测试、集成测试、安全扫描
- 部署到预发布环境 - 部署到预发布环境
- 集成测试 - 端到端测试、冒烟测试
- 审批关卡 - 需要人工审批
- 部署到生产环境 - 金丝雀、蓝绿、滚动部署
- 验证 - 健康检查、监控
- 回滚 - 失败时自动回滚
审批关卡模式
模式 1:人工审批
# GitHub Actions
production-deploy:
needs: staging-deploy
environment:
name: production
url: https://app.example.com
runs-on: ubuntu-latest
steps:
- name: Deploy to production
run: |
# Deployment commands
模式 2:延迟部署
# GitLab CI
deploy:production:
stage: deploy
script:
- deploy.sh production
environment:
name: production
when: delayed
start_in: 30 minutes
only:
- main
模式 3:多审批人
配置平台实际的受保护环境审批策略,并核实哪些人可以审批或绕过该策略。对于 Azure,应将人工验证绑定到已安装的任务版本及其支持的无代理作业,而不是将其放入任意部署钩子中。记录所需的审批人和证据;仅发送通知并不等于审批。
部署策略
1. 滚动部署
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 10
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 2
maxUnavailable: 1
特点:
- 逐步发布
- 可用性取决于就绪状态、容量和变更兼容性
- 易于回滚
- 适用于大多数应用程序
2. 蓝绿部署
# Blue (current)
kubectl apply -f blue-deployment.yaml
kubectl patch service my-app --type merge -p '{"spec":{"selector":{"app":"my-app","version":"blue"}}}'
# Green (new)
kubectl apply -f green-deployment.yaml
# Test green environment
kubectl patch service my-app --type merge -p '{"spec":{"selector":{"app":"my-app","version":"green"}}}'
# Rollback if needed
kubectl patch service my-app --type merge -p '{"spec":{"selector":{"app":"my-app","version":"blue"}}}'
特点:
- 即时切换
- 易于回滚
- 暂时增加一倍基础设施成本
- 适用于高风险部署
3. 金丝雀部署
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: my-app
spec:
replicas: 10
strategy:
canary:
steps:
- setWeight: 10
- pause: {duration: 5m}
- setWeight: 25
- pause: {duration: 5m}
- setWeight: 50
- pause: {duration: 5m}
- setWeight: 100
特点:
- 逐步切换流量
- 降低风险
- 使用真实用户进行测试
- 需要服务网格或类似设施
4. 功能标志
from flagsmith import Flagsmith
flagsmith = Flagsmith(environment_key="API_KEY")
if flagsmith.has_feature("new_checkout_flow"):
# New code path
process_checkout_v2()
else:
# Existing code path
process_checkout_v1()
特点:
- 部署但不发布
- A/B 测试
- 即时回滚
- 精细控制
流水线编排
多阶段实施约定
只构建一次,记录提交和不可变制品摘要,在该制品上运行测试和安全检查,将其部署到获准的预发布环境,运行集成检查,取得已配置的生产审批,然后以有限的渐进式流量部署同一摘要。每个作业都必须自行检出代码、锁定工具、配置作用域受限的凭据并传输制品。在晋级前验证发布状态和应用指标;不要立即晋级金丝雀,从而跳过观察窗口。通知必须明确配置授权的接收者和目的地。
流水线最佳实践
- 快速失败 - 先运行快速测试
- 并行执行 - 并发运行相互独立的作业
- 缓存 - 在多次运行之间缓存依赖项
- 制品管理 - 存储构建制品
- 环境一致性 - 保持各环境一致
- 密钥管理 - 使用密钥存储(Vault 等)
- 部署窗口 - 合理安排部署时间
- 监控集成 - 跟踪部署指标
- 回滚自动化 - 失败时自动回滚
- 文档 - 记录流水线阶段
回滚策略
自动回滚
deploy-and-verify:
steps:
- name: Deploy new version
run: kubectl apply -f k8s/
- name: Wait for rollout
run: kubectl rollout status deployment/my-app
- name: Health check
id: health
run: |
for i in {1..10}; do
if curl -sf https://app.example.com/health; then
exit 0
fi
sleep 10
done
exit 1
- name: Rollback on failure
if: failure()
run: kubectl rollout undo deployment/my-app
手动回滚
# List revision history
kubectl rollout history deployment/my-app
# Rollback to previous version
kubectl rollout undo deployment/my-app
# Rollback to specific revision
kubectl rollout undo deployment/my-app --to-revision=3
监控和指标
关键流水线指标
- 部署频率 - 部署发生的频率
- 前置时间 - 从提交到部署至生产环境所需的时间
- 变更失败率 - 部署失败的百分比
- 平均恢复时间(MTTR) - 从故障中恢复所需的时间
- 流水线成功率 - 成功运行的百分比
- 平均流水线持续时间 - 完成流水线所需的时间
与监控集成
定义有测量依据的基线、最低流量、观测间隔和合理的阈值。使用有界超时查询经验证的指标端点,并验证提供方状态、结果结构和数值。缺失、空白或格式错误的指标意味着验证未完成,绝不能视为健康。验证不可用时,停止晋级并升级处理。固定等待时间和 Shell 比较无法证明部署健康。
审批与编排检查清单
将制品绑定到不可变的提交或镜像摘要,验证确切目标和现有部署标识,要求生产环境经过受保护环境审批,并记录健康标准和明确的回滚版本。每个作业都在独立的检出目录和运行时中执行;应传输已验证的制品,而不要假设前一个运行器的文件系统仍然可用。以下均为示意示例,并非完整的凭据或编排模板。无需未打包的操作手册。
相关技能
github-actions-templates- 用于实现 GitHub Actionsgitlab-ci-patterns- 用于实现 GitLab CIsecrets-management- 用于处理机密信息
限制
- 仅当任务明确符合上述范围时,才使用此技能。
- 不要将输出视为环境特定验证、测试或专家审查的替代品。
- 如果缺少必需的输入、权限、安全边界或成功标准,请停止并请求澄清。