关于 deployment-pipeline-design
deployment-pipeline-design 是用于规划多阶段 CI/CD 流水线的技能,面向设计或维护部署流程的工程团队。它涵盖审批门禁、环境晋级、渐进式发布、健康检查与回滚方案。
主要功能
- 01规划流水线阶段与依赖
- 02定义环境间审批门禁
- 03设计金丝雀或蓝绿发布
- 04设置健康检查与冒烟测试
- 05配置自动回滚触发条件
适用场景
- 01为新服务设计 CI/CD 架构
- 02为多环境部署设置安全扫描
- 03建立金丝雀或蓝绿发布流程
- 04根据指标退化自动回滚
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ wshobson/ agents --skill deployment-pipeline-design安装后在 Claude Code 中输入/deployment-pipeline-design确认已加载。
附带文件references/advanced-strategies.mdreferences/details.md
详细介绍
部署流水线设计
多阶段 CI/CD 流水线的架构模式,包括审批门禁、部署策略和环境晋级工作流。
用途
设计稳健、安全的部署流水线,通过合理的阶段划分、自动化质量门禁和渐进式交付策略,在速度与安全之间取得平衡。本技能涵盖流水线架构的结构化设计,以及实现可靠生产部署的运维模式。
输入 / 输出
你需要提供
- 应用类型:语言/运行时、容器化或裸金属、单体或微服务
- 部署目标:Kubernetes、ECS、VM、无服务器或平台即服务
- 环境拓扑:环境数量(dev/staging/prod)、区域布局、气隙隔离要求
- 发布要求:可接受的停机时间、回滚 SLA、流量拆分需求、金丝雀与蓝绿偏好
- 门禁约束:审批团队、必需测试覆盖率阈值、合规扫描(SAST、DAST、SCA)
- 监控栈:用于自动化晋级决策的 Prometheus、Datadog、CloudWatch 或其他指标来源
本技能产出
- 流水线配置:阶段定义、任务依赖、并行度和缓存策略
- 部署策略:选定的发布模式及其带注释的配置(金丝雀权重、蓝绿切换、滚动参数)
- 健康检查设置:浅层与深层就绪探针、部署后冒烟测试脚本
- 门禁定义:自动化指标阈值和手动审批工作流
- 回滚计划:自动化回滚触发条件和手动操作手册步骤
何时使用
- 为新服务或平台迁移设计 CI/CD 架构
- 在环境之间实现部署门禁
- 配置带强制安全扫描的多环境流水线
- 建立基于金丝雀或蓝绿策略的渐进式交付
- 调试阶段成功但生产行为异常的流水线
- 通过在指标劣化时自动回滚来缩短平均恢复时间
详细模式与示例
详细的模式文档位于 references/details.md。当上述导航层级不足以解决问题时,请阅读该文件。
故障排查
健康检查在流水线中通过,但服务在生产中不健康
流水线健康检查访问的是浅层 /ping 端点,即使数据库不可达也会返回 200。请使用会验证实际依赖的深层就绪检查(参见上文健康检查部分)。
金丝雀部署始终不晋级到 100%
Argo Rollouts 需要有效的 AnalysisTemplate 才能自动晋级。如果 Prometheus 查询没有返回数据(例如指标名称已更改),分析会一直处于不确定状态,晋级也会停滞。添加 inconclusiveLimit,让发布快速失败而不是挂起:
spec:
metrics:
- name: error-rate
failureCondition: "result[0] > 0.05"
inconclusiveLimit: 2 # fail after 2 inconclusive results, not hang indefinitely
provider:
prometheus:
query: |
sum(rate(http_requests_total{status=~"5.."}[2m]))
/ sum(rate(http_requests_total[2m]))
Staging 部署成功,但生产任务从未启动
检查生产环境保护规则是否已配置——缺少审查人分配意味着审批门禁会无限期等待,且没有任何通知。在 GitHub Actions 中,确保 Required reviewers 设置为 Settings → Environments → production 中已存在的用户或团队。
Docker 层缓存每次运行都被破坏,导致构建缓慢
如果 COPY . . 出现在依赖安装之前,任何源文件变更都会使依赖层失效。请调整顺序,先复制依赖清单文件:
# Good: dependencies cached separately from source code
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
回滚后数据库迁移仍作用于旧代码
服务回滚但未回滚迁移,会导致 schema/代码不匹配错误。请始终让迁移向后兼容(仅增量添加),至少持续一个发布周期,并将撤销脚本与迁移一起进行版本管理:
# migrations/V20240315__add_nullable_column.sql (forward)
# migrations/V20240315__add_nullable_column.undo.sql (backward)
在旧代码版本从所有环境中完全退役之前,切勿运行破坏性迁移(DROP COLUMN、ALTER NOT NULL)。
进阶主题
有关平台特定的流水线配置、多区域发布工作流以及高级 Argo Rollouts 模式,请参阅:
references/advanced-strategies.md— 扩展 YAML 示例、平台特定配置(GitHub Actions、GitLab CI、Azure Pipelines)、多区域金丝雀模式,以及数据库迁移回滚策略
相关技能
github-actions-templates- 用于 GitHub Actions 实现模式和可复用工作流gitlab-ci-patterns- 用于 GitLab CI/CD 流水线实现secrets-management- 用于 CI/CD 流水线中的密钥处理