AWS CodePipeline
检测源代码变更并自动执行构建、测试和部署的全托管 CI/CD 服务,实现发布流程的完全自动化
概述
AWS CodePipeline 是一项全托管的持续交付(CD)服务,用于自动化软件发布流程。通过组合源阶段(CodeCommit、GitHub、S3、ECR)、构建阶段(CodeBuild)、测试阶段和部署阶段(CodeDeploy、CloudFormation、ECS、S3)定义流水线,每次代码提交时自动执行。V2 流水线支持流水线级变量、Git 标签触发和改进的手动审批阶段等更灵活的工作流。
流水线结构与阶段
CodePipeline 的流水线由多个阶段组成。每个阶段包含一个或多个操作,操作可顺序或并行执行。典型流水线结构为:Source(获取代码)→ Build(编译和测试)→ Deploy to Staging(部署到预发布环境)→ Manual Approval(手动审批)→ Deploy to Production(部署到生产环境)。手动审批阶段是在生产部署前插入人工审查的门控。通过 SNS 通知向审批者发送邮件,等待批准或拒绝操作。流水线的执行历史全部记录,可查看各阶段的成功/失败、执行时间和制品信息。
与 CodeBuild 和 CodeDeploy 的协作
CodeBuild 是全托管构建服务,在 buildspec.yml 中定义构建命令,执行 Docker 镜像构建、单元测试、静态分析和制品生成等。构建环境是一次性容器,每次构建提供干净的环境。CodeDeploy 自动化向 EC2、ECS、Lambda 的部署。EC2 部署可选择滚动更新、蓝绿部署和就地部署三种策略。ECS 部署推荐蓝绿部署,将流量逐步迁移到新任务集,出现问题时自动回滚。Azure 对应服务为 Azure DevOps Pipelines,同样可构建 CI/CD 流水线。
实际应用模式
CodePipeline 最常见的实际应用是微服务的部署自动化。为每个微服务定义独立流水线,实现服务独立部署。结合 CloudFormation 可在同一流水线中部署应用代码和基础设施变更。还支持跨账户部署,可构建在开发账户构建制品、部署到预发布和生产账户的流水线。CodePipeline V2 流水线费用为每月 1 美元加操作执行的按量计费。相关书籍(Amazon)可帮助从基础到高级系统性学习。