使用 AWS Code Deploy 与 Jenkins 的优缺点是什么?

What are the pros and cons of using AWS Code Deploy Vs Jenkins?

我们正在使用一堆 EC2 实例,这些实例可能会在未来扩展(大约 100 个实例),现在我们正在寻求使用 Jenkins 或 AWS Code deploy 进行自动部署。

我发现我们可以将 AWS Code 部署插件与 Jenkins 一起使用,但是下面的优缺点是什么?

1) 独立 AWS 代码部署 2) 带有 AWS Code Deploy 插件的 Jenkins。

我们同时使用 CodeDeploy 和 Jenkins 来管理对我们 AWS 环境的部署。

各有各的作用,我不认为是pro/con分析。我相信您需要 BOTH 来管理持续集成构建 (Jenkins) 和将测试构建部署到您的 EC2 环境 (CodeDeploy)

这是我们的设置:

  1. Jenkins 轮询我们的 SCM 是否已更改。发生更改时,将构建应用程序并将其存档到 ZIP 中,并在 CodeDeploy 中注册为可部署工件。我们用 Jenkins 内部版本号标记修订 - 比如 app_6111.zip。每个构建都发送到我们的代码部署桶:s3:codedeploy-example-com/app

  2. 在 CodeDeploy 中,我们配置了一个应用程序,每个环境都有部署组,例如测试、生产。因为我们使用#1,所以我们所有的构建总是准备好立即部署。例如,只需单击一两次,我们就可以将修订 app_6111.zip 部署到测试服务器。

对我们来说,Jenkins 是现代 devops 和持续集成、测试和部署的瑞士军刀。它是 backbone,我们可以从中管理构建、测试和构建部署工件。我们可以与所有 AWS 服务集成,例如 S3、CodeDeploy、Elastic Beanstalk 等。

回答您的具体问题:

I found that we can use AWS Code deploy plugin with Jenkins, but What are the pros and cons of following?

1) 独立 AWS 代码部署

独立的 CodeDeploy 不会与您的构建过程集成。它必须配置为手动上传的静态 S3 工件或 Github URL。 Github 很好,但是没有构建的概念——它是从 master 或其他分支部署的。例如,您不能轻易回滚到已知构建。测试未集成。无法流水线 tasks/jobs.

2) 带有 AWS Code Deploy 插件的 Jenkins。

恕我直言,这是首选方法。使用这两种工具。构建已知和经过测试的构建,然后将部署注册到 CodeDeploy。生活是美好的。