0

当新的应用程序版本不存在时,我使用CodeShip将我的应用程序部署到AWS EC2实例。 CodeShip首先将我的应用程序打包成.zip并放入S3中​​。 每个部署包都使用不同的文件名生成。 当我使用CodeShip进行部署时,他们在CodeDeploy中创建一个新修订版,并将其部署到所有当前实例。在一个方向上,每次我部署新版本时,它都会被部署到所有已经存在的实例中,但是我怎样才能将我的应用程序的最新版本从CodeDeploy部署到新出生的实例? 有没有使用aws-sdk(Ruby或cli)来实现这一目标的方法?如何在新的EC2实例上使用CodeDeploy部署现有应用程序

我使用OpsWorks来维护我的实例,并使用自定义的主厨食谱来构建环境。

感谢

+0

为每个函数/图层创建不同的标签名称,因此应用更改时,将应用于具有该标签的所有实例。 – BMW 2014-12-27 22:33:01

回答

0

从CodeDeploy http://aws.amazon.com/codedeploy/faqs/,如果你去的概念部分和看问题“什么是部署组”,在回答您将获得有关如何组部署工作的更多想法。

CodeDeploy使用部署组中的标签在创建新部署时查找EC2实例。因此,对于新出生的实例,基本上只需要在该部署组中使用相同的标签标记它们,然后使用所需的修订启动新的部署。 CodeDeploy将查找部署组中标记了标签的所有EC2实例。

但是你应该注意到,如果你想手动启动一个新的EC2实例,你需要做几件事情。您可以按照此处的步骤操作:http://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-prepare-instances.html以启动可与CodeDeploy配合使用的实例。

实例标记并正确设置后,您可以按照当前的方式启动具有最新修订版的新部署。应该通过CodeDeploy自动将修订部署到新实例。

+1

谢谢。每次新实例出现时部署修订版本都是一个很大的开销,因为它会将代码部署到* all *标签成员。 – user3153310 2015-04-16 09:03:28

1

由于您有一组您希望运行相同应用程序的EC2实例,因此请考虑使用AutoScaling组(ASG)。然后,根据ASG创建部署组(不是EC2实例标签)。下次在此ASG中启动任何新机器时,Code Deploy将自动运行并部署上一个成功的部署软件包。我已经使用了这种方法好几个月了,并且它完美地工作。

相关问题