如何基于Git标签执行CodePipeline ECS部署

0

【以下的问题经过翻译处理】 我正在运行一个 ECS 应用程序,它使用 CodeCommit、CodePipeline 和 ECR 进行自动构建和部署。基础架构是通过 Terraform 管理的。我的设置与这里的教程相当类似:https://devops-ecs-fargate.workshop.aws/en/1-introduction.html

当前的 CI/CD 工作流程如下:

将代码推送到 CodeCommit 仓库的主分支 CodePipeline 构建容器镜像并将其推送到 ECR 注册表 部署最近构建的容器到 ECS 并更新服务 这对于非常简单的设置来说是可以的,我可以进行基于主干的开发(根据这篇博客文章,这是在使用 CodePipeline 时建议的方式:https://aws.amazon.com/blogs/devops/multi-branch-codepipeline-strategy-with-event-driven-architecture/)。然而,我不希望最近的构建直接推送到生产环境。我想要实现的是一个两步的 CI/CD 流程(2 条流水线,2 个独立的目标环境):

将代码推送到 CodeCommit 仓库的主分支 CodePipeline 构建容器镜像并将其推送到 ECR 注册表 最近构建的容器被部署到 ECS 开发环境 对特定提交打标签(使用 git tag)将触发一个单独的 CodePipeline 在步骤 4 中触发的流水线将相关容器部署到生产环境 似乎使用 CodePipeline 的内置部署功能的唯一方法是指定一个固定的分支名称,所有的版本控制提交都会触发新的构建/部署 - 我看不到指定 git 标签的方法(也没有指定任何通配符的方法)。这篇博客文章(https://aws.amazon.com/blogs/devops/adding-custom-logic-to-aws-codepipeline-with-aws-lambda-and-amazon-cloudwatch-events/)暗示了通过使用 Lambda 和 CloudWatch 事件来绕过这个缺陷的方法。

我的问题是:

是否有办法在 AWS CodePipeline 中实现上述的 CI/CD 设置? 如果可能:最佳实践如何实施? 感谢任何指点和帮助!

亲切的问候和衷心的感谢,

Maik

1 回答
0

【以下的回答经过翻译处理】 另一种方法是扩展您的流水线,首先将其部署到开发/暂存环境,然后进行手动审核操作,然后再部署到生产环境。这将使您能够将所有更改部署到开发/暂存环境进行测试,然后仅部署选择的构建版本到生产环境。手动审核操作会暂停构建,直到具有 IAM 访问权限的审核人员批准更改。未在七天内被拒绝或未被批准的流水线将具有“失败”状态。

该方法在CI/CD for ECS Workshop的Lab 2中有详细介绍,具体在Extend Pipeline步骤中。该工作室还包括高级部署方法,如蓝/绿部署和金丝雀部署。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则