Ansible是Hudson / Jenkins等CI工具的替代品吗?

时间:2014-09-15 07:20:16

标签: jenkins hudson ansible

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

所以,我处于一个可疑状态:可能是我以错误的方式使用Ansible。

当我查看Jenkins时,它可以执行构建,运行测试,部署等操作。 Hudson缺少的是在AWS等云环境中创建/删除实例。

因此,一般来说,我们需要使用Ansible / Jenkins的目的是什么?对于CI,我需要使用Ansible和Jenkins的组合吗?

请注意Ansible的正确用法。

2 个答案:

答案 0 :(得分:111)

首先,Jenkins和Hudson基本上是同一个项目。我将在下面将其称为Jenkins。有关详情,请参阅How to choose between Hudson and Jenkins?Hudson vs Jenkins in 2012What is the most notable difference between Jenkins and Hudson from an user perpective?

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

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

如果您的计算机环境和部署过程非常直截了当(例如在团队之外配置的Heroku或铁),Jenkins可能已经足够了。您可以编写一个自定义脚本,将其作为最终构建步骤(或链接步骤)进行部署。

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

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

他们如何一起工作?

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

詹金斯有哪些替代方案?

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

答案 1 :(得分:12)

Ansible只是一个荣耀的SSH循环"。 CI不仅是软件运行,而且是处理成功和失败的整个过程,谁获得通知,以及如何将更改合并到目标版本控制中。

如果我们只专注于软件,那么CI是由代码更改触发的反应式调度程序,并触发典型的构建 - 验证 - 释放 - 部署序列"步骤"。

因此,就软件而言,Ansible没有额外的"加糖"只是一个运行工具包,可以是那些步骤,但它不是CI。 Ansible(没有塔)完全没有这种反应性质。

如果你想将Ansible与CI结合,你可以。

Ansible塔是一个非常安静的调度程序,但如果你需要CI软件,我认为你不一定需要它。任何能够运行shell脚本的CI应用程序都能够启动Ansible playbooks。

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

Ansible塔可以在复杂的环境中有意义,有许多团体触摸Ansible代码......事实是,我没有看到一个真正的理由来支付它。但是,如果一个经理喜欢这个网络界面,那么就没有什么可以忍受了#34;但是其他人使用它"逻辑。

我怀疑Ansible塔的概念是对傀儡企业的回应。

:)