
关于
带审批门控和部署策略的多阶段 CI/CD 管道架构模式。
name: deployment-pipeline-design description: "多阶段 CI/CD 流水线的架构模式,包含审批门控和部署策略。" risk: critical source: community date_added: "2026-02-27"
部署流水线设计
多阶段 CI/CD 流水线的架构模式,包含审批门控和部署策略。
不要在以下情况使用此技能
- 任务与部署流水线设计无关
- 你需要此范围之外的其他领域或工具
说明
- 明确目标、约束和所需输入。
- 应用相关最佳实践并验证结果。
- 提供可操作的步骤和验证方法。
- 如需详细示例,请打开
resources/implementation-playbook.md。
目的
设计健壮、安全的部署流水线,通过合理的阶段组织和审批工作流在速度与安全之间取得平衡。
在以下情况使用此技能
- 设计 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 Pipelines
stages:
- stage: Production
dependsOn: Staging
jobs:
- deployment: Deploy
environment:
name: production
resourceType: Kubernetes
strategy:
runOnce:
preDeploy:
steps:
- task: ManualValidation@0
inputs:
notifyUsers: 'team-leads@example.com'
instructions: 'Review staging metrics before approving'
参考: 见 assets/approval-gate-template.yml
部署策略
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 label service my-app version=blue
# Green (new)
kubectl apply -f green-deployment.yaml
# Test green environment
kubectl label service my-app version=green
# Rollback if needed
kubectl label service 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 测试
- 即时回滚
- 精细控制
流水线编排
多阶段流水线示例
name: Production Pipeline
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build application
run: make build
- name: Build Docker image
run: docker build -t myapp:${{ github.sha }} .
- name: Push to registry
run: docker push myapp:${{ github.sha }}
test:
needs: build
runs-on: ubuntu-latest
steps:
- name: Run tests
run: make test
兼容工具
Claude CodeCursor
标签
运维部署

