Ansible是否是哈德逊/Jenkins等CI工具的替代品?

wz3gfoph  于 2022-12-29  发布在  Jenkins
关注(0)|答案(2)|浏览(198)

最近,我们公司决定使用 Ansible 进行部署和持续集成,但是当我开始使用Ansible时,我没有找到使用Maven构建Java项目的模块,也没有找到运行JUnit测试或JMeter测试的模块。
所以,我处于一种怀疑的状态:可能是我用错了Ansible
当我看Jenkins的时候,它可以做构建、运行测试、部署等事情。哈德逊缺少的是在AWS这样的云环境中创建/删除示例。
那么,总的来说,我们需要使用Ansible/Jenkins做什么?对于CI,我需要使用Ansible和Jenkins的组合吗?
请说明Ansible的正确用法。

aurhwmvo

aurhwmvo1#

首先,Jenkins和哈德逊基本上是同一个项目,下面我将把它称为Jenkins,更多信息请参见How to choose between Hudson and Jenkins?Hudson vs Jenkins in 2012What is the most notable difference between Jenkins and Hudson from a user perpective?
第二,Ansible并不是一个持续集成引擎,它(通常)不会轮询git repos,也不会以正常的方式运行失败的构建。

何时可以直接使用Jenkins?

如果你的机器环境和部署过程非常简单(比如Heroku或iron是在你的团队之外配置的),Jenkins可能就足够了。你可以编写一个定制的脚本,把部署作为最后的构建步骤(或者一个链接步骤)。

何时可以简单使用Ansible?

如果你只需要“部署”而不需要构建/测试,Ansible可能就足够了。例如,你可以从命令行或使用Ansible Tower运行部署。这对于小项目,静态站点等非常好。

它们如何协同工作?

一个很好的组合是使用Jenkins来构建、测试和保存工件。添加一个步骤来调用Ansible或Ansible Tower来处理实际的部署过程。这允许Ansible处理 machine 配置,并让Jenkins处理CI过程。

Jenkins的替代方案是什么?

我强烈推荐X1 E3 F1 X(不要和Go语言混淆)而不是Jenkins。其他包括CruiseControl、Travisci和Integrity。

e5njpo68

e5njpo682#

Ansible只是一个"美化的SSH循环",CI不仅仅是软件运行,而是成功和失败如何处理,谁得到通知,以及更改如何合并到目标版本控制的整个过程。
如果我们只关注软件,CI是一个由代码更改触发的React性调度程序,并触发典型的构建-验证-发布-部署"步骤"序列。
所以在软件方面,没有额外的"sugaring"的Ansible只是一个运行东西的工具包,可以是那些步骤,但它不是CI。Ansible(没有塔)完全缺乏这种React性。
如果你想让安赛波和CI联姻,你可以。
Ansible塔是一个非常面向Ansible的调度器,但是如果你需要CI软件,我想你不一定需要它,任何能够运行shell脚本的CI应用程序都能够启动Ansible剧本。
然而,与Ansible塔不同的是,CI工具知道显示所有测试框架的测试报告、触发通知等。
Ansible塔在一个有很多团队都在使用Ansible代码的复杂环境中是有意义的......事实上,我还没有看到一个真正的理由为它付费。但如果一个经理喜欢这个网络界面,那么没有什么能经得起"但其他人使用它"的逻辑。
我怀疑Ansible塔的概念是对傀儡企业的回应。
:)

相关问题