如何使用 AWS CodeDeploy 促进发布?

How to promote release with AWS CodeDeploy?

我正在努力将我们的部署管道从 TeamCity + Octopus Deploy 迁移到 AWS Pipeline(使用 AWS CodeBuild + AWS CodeDeploy)。我已经能够为 1 个环境设置整个管道。我正在努力的是将该部署推广到不同的环境。

例如,初始部署是在测试环境中进行的。测试实例上的 CodeDeploy 代理处理配置转换(即用测试值替换连接字符串等)。现在我想将相同的工件(无需重建)部署到生产环境,以便代理和生产环境的应用程序 运行 做同样的事情。

在 Octopus Deploy 中,此功能是内置的。您只需单击升级按钮和 select 目标环境。有没有办法通过 AWS CodePipeline 服务实现同样的目标?

在 CodeDeploy 中,'Application' 映射到将部署代码的 'Deployment group'。部署组可以是一组 EC2 实例或 ECS/Lambda。这个'Deployment group'.

里面没有'Environment'(dev/test/prod)的概念

在 AWS 世界中,您需要的是一个具有多个部署阶段的 CodePipeline,使用 CodeDeploy 作为部署提供程序。这些多个 CodeDeploy 应用程序(在不同的 CodePipeline 阶段)将映射到不同的环境 (dev/test/etc),因为这些 CD 应用程序的部署组将映射到不同的实例集。部署到这些部署阶段的工件(在 CodePipeline 中)应该是相同的,您可以使用手动批准操作来 "gate" 部署到例如生产环境。

我目前正在试用相同的迁移,发现它不适用于我们当前的流程,要充分利用它,您必须更改为更线性或基于主干的方法。

正如 shariqmaws 所指出的,没有环境,但您可以将每个管道类似于一个八达通通道,因此您将拥有一个实时管道,它可以构建主管道,部署到 Staging/UAT,并等待升级到Live,你可以有一个 Dev pipe 来处理不稳定的变化。

没关系,但棘手的一点是 Dev/QA 分支在章鱼中很容易管理,我们在合并前进行测试,因此有必要创建或更改现有的 Dev/QA pipe 指向你想要部署用于测试的任何功能分支,这不是很实用,因为你需要另一个管道来管理这个管道!

Octopus 是一个“自动化部署和发布管理工具”,而 CodePipeline 只是一个连续的integration/deployment工具,所以你不能真正用它代替 octopus。