与詹金斯或厨师合作的CI / CD流程

时间:2017-08-14 14:48:16

标签: amazon-web-services jenkins continuous-integration chef continuous-deployment

假设我必须做以下工作: 1:检测S3上是否有新的WAR文件。 2:从S3铲斗中拉出。 3:停止Wildfly服务器 4:替换Wildfly Server上的WAR文件 5:重新启动Wildfly服务器 enter image description here

该图以Jenkins为例。 Wildfly和Appeon属于EC2实例。由于某些许可问题,我们不能每次都使用CFT创建新实例,因此我必须假设所有这些步骤都在此EC2实例中完成。

我们假设故障转移不是问题。

完成这两项工作的两条路线,一条是使用Jenkins,就像Jenkins将观看S3存储桶一样,停止,替换,重新启动服务器和WAR,而不是每次都创建一个新实例。

另一个是在该实例上使用Chef,它将每5分钟检查一次S3存储桶,例如,如果有新的WAR文件,请将其拉​​下来。 (假设WAR文件名不会改变...),使用一些魔术脚本来停止服务器,替换WAR文件,重启服务器,所有运行在同一个实例上。

因为我不懂CI / CD,詹金斯或厨师。

所以任何建议或示例都会有很大帮助!提前谢谢!

2 个答案:

答案 0 :(得分:1)

如果这真的是你所做的一切,那么厨师将会过度夸大。从cron运行一个简单的bash脚本(或者如果你想超级想象的话,还是一个systemd计时器单元)可能会没问题。我会从小做起,并尝试不要使事情过于复杂,部署管道中移动的部分越多,可能破坏的东西越多(通常在最糟糕的时候)。

答案 1 :(得分:1)

如何观看上传war文件的进程,而不是观看s3存储桶。将部署设置为上载过程的下游。然后你的停止服务和部署可以是一堆通过jenkins的shell脚本。它应该停止你的服务,可能是使用ssh。 Ssh并且做了新战争的卷曲/战争(通过删除旧战争)& ssh开始服务......你不要让厨师参与进来让事情变得复杂。