如何基于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 Antwort
0

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

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

profile picture
EXPERTE
beantwortet vor 6 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen