使用 AWS CodePipeline 构建 CI/CD 流水线 - 从源代码到部署的自动化

自动化从源代码变更检测到构建、测试、部署的全流程。介绍 V2 触发器过滤器、手动审批操作和跨账户部署的设计。

CodePipeline 概述

CodePipeline 是将源代码变更到部署全流程自动化的 CI/CD 服务。源阶段检测 GitHub 或 CodeCommit 的变更,构建阶段由 CodeBuild 执行测试和构建,部署阶段由 CodeDeployCloudFormation 执行部署。

流水线设计

流水线 V2 类型支持触发器过滤器,可仅在特定分支或文件路径变更时启动流水线。在部署阶段前放置手动审批操作,通过 SNS 通知向审批者发送邮件。跨账户部署中,通过流水线制品 S3 存储桶的桶策略和 KMS 密钥策略授予生产账户角色访问权限,部署操作中 AssumeRole 生产账户的角色。

部署策略与回滚

CodePipeline 的部署阶段可与 CodeDeploy 联动实现蓝/绿部署和金丝雀部署。ECS 蓝/绿部署中,启动新的任务集并通过测试流量验证,确认无问题后切换生产流量。切换后旧任务集保留一段时间,出现问题时可立即回滚。Lambda 金丝雀部署中,将 10% 的流量导向新版本,通过 CloudWatch Alarms 监控错误率,超过阈值时自动回滚。CloudFormation 部署操作中,建议将变更集的创建和执行分离,通过手动审批确认变更内容后再执行部署。 要全面学习 CodePipeline 的流水线设计,请参考技术书籍 (Amazon)

流水线的监控与故障处理

流水线的执行状态作为 EventBridge 事件发布,因此可在失败时通过 SNS 向 Slack 发送通知,或通过 Lambda 执行自动重试。通过 CloudWatch 指标可视化流水线的执行时间、成功率和各阶段耗时,追踪构建时间的增长趋势和部署频率的变化。大多数故障源于构建阶段的依赖关系错误或部署阶段的权限不足,因此定期审查 buildspec.yml 的依赖缓存设置和 IAM 角色的权限范围非常重要。流水线 V2 可定义流水线级别的变量,将环境名称和部署目标区域参数化,在多个环境中复用同一流水线定义。

CodePipeline 的费用

CodePipeline V2 类型按操作执行次数计费,每月前 100 次免费,之后每次约 0.002 美元(截至 2026 年 8 月)。V1 类型每条流水线每月固定约 1.00 美元。新建流水线推荐使用 V2 类型。CodeBuild 的构建费用(build.general1.small 每分钟约 0.005 美元)和 CodeDeploy 的费用(EC2 部署免费)另行计算。执行频率低时 V2 的按量计费更有优势,每天执行数十次时 V1 的固定费用可能更经济。

总结

CodePipeline 是将源代码变更到部署全流程自动化的 CI/CD 编排服务。V2 类型的触发器过滤器可精细控制启动条件,与 CodeDeploy 联动实现蓝/绿和金丝雀部署,与 EventBridge 联动自动化流水线监控和故障通知。结合手动审批操作,可构建兼顾自动化与人工判断的部署流程。