AWS部署:Jenkins AWS CodeDeploy vs Jenkins SSH命令



我想知道将代码部署到AWS EC2实例的更好方法。

在我的工作场所,我们有一个项目,詹金斯(Jenkins(的部署工作将去(1(:

  • 在詹金斯机器上拉代码
  • 将其拉链并上传到S3实例
  • codedeploy下载并将代码解开到EC2实例
  • 运行迁移,建立资产,重新启动服务器等。

另一个将要走(2(:

  • Jenkins SSH的EC2实例
  • git从生产分支/发行标签中拉出
  • 运行迁移,建立资产,重新启动服务器等。

第二种情况看起来比第一个方案要简单得多,即使我经常看到第一个或它的变体。而且我可以看到,第一个会更好地用于在实际部署之前运行测试,但是除此之外,我没有看到太多优势。

根据您的经验,哪一个会更好(省略测试部分(?我不知道的任何一个都有明显的安全问题吗?

使用代码部署的第一种方法意味着您可以使用许多部署配置。

这可以用于与应用程序相关的更改或基础架构。

您提到的是,要部署的应用程序的人工制品上传到S3,而编码eploy则根据部署配置进行其余的工作。这使您可以自动自动回滚更改等。

此外,我认为在使用链接到CodeDeploy的基础架构时,不需要SSH访问,因此这减少了与密钥相关的一些维护和安全问题。

来自基础架构。在AWS中构造某些负载平衡的基础架构(ELB ASG(并将其链接到编码eploy是相对容易的。代理就是所需的一切。但是,如果您需要调整基础架构,也就是说,扩展或向上扩展。这些更改可以通过CodeDeploy及其部署配置相对轻松地引入。

此外,从S3存储桶中,而不是直接进入CodeDeploy,您可以合并由部署阶段组成的代码iPipeline,该阶段部署到连接到CodeDeploy的不同环境中。这意味着詹金斯(Jenkins(运行的某些测试任务可能会委派给编码eploy或Codepipeline中的阶段,这导致了最终的编码阶段。

这些只是我认为第一个选择更好的原因。因此,总而言之,我认为,从长远来看,假设您的需求可能会改变,则在长远的情况下,第一种选择在战略上更有用。通过利用编码eploy,您可以在以后适应和扩展您的方法。

希望这会有所帮助!帕特里克

最新更新