Ansible是否可以替代Hudson / Jenkins等CI工具?


72

最近,在我们公司,我们决定使用Ansible进行部署和持续集成。但是,当我开始使用Ansible时,我没有找到用于使用Maven构建Java项目的模块,也没有找到用于运行JUnit测试或JMeter测试的模块。

所以,我的状态令人怀疑:可能是我以错误的方式使用了Ansible。

当我看着Jenkins时,它可以完成诸如构建,运行测试,部署之类的工作。哈德森(Hudson)缺少的一件事是在AWS等云环境中创建/删除实例。

因此,总的来说,我们需要出于什么目的使用Ansible / Jenkins?对于CI,我需要结合使用Ansible和Jenkins吗?

请说明正确使用Ansible的方法。

Answers:


127

首先,詹金斯和哈德森基本上是同一项目。我在下面将其称为詹金斯。请参阅如何在哈德森和詹金斯之间进行选择?Hudson vs Jenkins(2012年),以及从用户角度来看,Jenkins和Hudson之间最显着的区别是什么?更多。

其次,Ansible并不是要成为一个持续集成引擎。它(通常)不轮询git repos并以合理的方式运行失败的构建。

我什么时候可以简单地使用詹金斯?

如果您的机器环境和部署过程非常简单(例如在团队外部配置的Heroku或Iron),那么Jenkins可能就足够了。您可以编写一个自定义脚本,将其作为最后的构建步骤(或链接的步骤)进行部署。

我什么时候可以简单地使用Ansible?

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

他们如何一起工作?

一个好的组合是使用Jenkins来构建,测试和保存工件。添加一个步骤来调用Ansible或Ansible Tower以处理实际的部署过程。这使Ansible可以处理机器配置,并使Jenkins可以处理CI流程。

詹金斯的替代品有哪些?

我强烈建议使用Thoughtworks Go(不要与Go语言混淆)而不是Jenkins。其他包括CruiseControl,TravisCI和Integrity。


20

Ansible只是一个“标准化的SSH循环”。CI不仅是运行的软件,还包括处理成功与失败,谁得到通知以及更改如何合并到目标版本控件中的整个过程。

如果我们仅关注软件,则CI是一种响应式调度程序,由代码更改触发,并触发“步骤”的典型build-validate-release-deploy序列。

因此,就软件而言,无需额外“加糖”的Ansible只是运行工具的工具包,可以是很简单的步骤,但不是CI。Ansible(没有塔)完全没有这种反应性。

如果您想将Ansible与CI结婚,可以。

Ansible塔是一个非常面向Ansible的调度程序,但是如果您需要CI软件,我认为您不一定需要它。任何能够运行Shell脚本的CI应用程序都可以启动Ansible剧本。

但是与Ansible塔不同,CI工具知道显示所有测试框架的测试报告,触发通知等。

Ansible塔在复杂的环境中有意义,因为有很多小组接触Ansible代码...事实是,我还没有看到为此付费的真正理由。但是,如果经理喜欢Web界面,那么什么也受不了“但其他人使用它”的逻辑。

我怀疑Ansible塔的概念是对木偶企业的回应。

:)


Upd:在某个时间点,RedHat的家伙已经打开了Tower的一部分,现在有一个项目“ AWX”。它可能可以用来实现CI-ish功能。
mvk_il
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.