对于我们的一个应用程序,我们正在尝试自动化部署过程。我们为此应用程序实现了端到端持续集成(Build / Test / Package / Report)。现在我们正在尝试实现自动部署。此应用程序需要部署在2000台服务器和每台服务器下的50台客户机上。一些组件将安装在服务器上,其中一些将安装在客户端上 用于CI的工具:Jenkins,Github,msbuild,nunit,specflow,wix。
我已经了解了持续交付和持续部署之间的区别,并了解到持续交付意味着代码/更改已经证明可以在任何时间点生效,持续部署意味着经过验证的代码/更改将自动部署到生产环境中服务器
网上的大多数文章都解释了我们如何将继续交付/部署的部署部分自动化到其中一个服务器(DEV / Staging / Preproduction / production)。这篇文章都没有谈到将应用程序部署到大量服务器和客户端。
现在我的问题是 1)将应用程序部署到2000多台服务器和客户端是持续部署的一部分,还是应该用CI / CD处理? 2)如果可以在CI / CD中处理它,那么如何在Jenkins交付管道中对此进行建模并从CI工具触发所有服务器的部署? 3)是否有任何工具可以与CI工具集成以自动部署?
由于
答案 0 :(得分:1)
我将这两个方面分开:
对于#1 - 我确信有专业的IT工具可供使用。请咨询您的IT部门。如果部署不需要超级用户权限,或者您拥有此类权限(和知识),那么您也可以编写自己的自定义部署/管理工具。
对于#2 - CD并没有真正指定是否应该部署到单个服务器,一定百分比的生产服务器或所有服务器上。您的选择应基于有意义或更适合您特定背景的内容。如果你决定这样做,它到底是怎么做的?这实际上取决于#1 - 您只需要从CI触发流程。使用自定义部署工具应该轻而易举:)
答案 1 :(得分:0)
我会将其建模如下:
SUCCESS
时,每个包装都应以SUCCESSFUL
结束,否则应为UNSTABLE
或FAILURE
。在这种情况下,您不可能错过低级别的工作。我会用:
puppet
以选择每个序列运行的服务器列表yum
上的linux
服务。它将允许您依赖其安装验证机制我确信我错过了一些东西,但我希望它会给你一个可接受的起点