Ansible是像Hudson / Jenkins这样的CI工具的替代品吗?

最近,在我们公司,我们决定使用Ansible进行部署和持续集成。 但是当我开始使用Ansible的时候,我没有find使用Maven构buildJava项目的模块,或者运行JUnittesting或JMetertesting的模块。

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

当我看着jenkins,它可以做build设,运行testing,部署。 Hudson中缺less的东西是在AWS等云环境中创build/删除实例。

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

请正确使用Ansible。

首先,Jenkins和Hudson基本上是同一个项目。 下面我将把它称为Jenkins。 请参阅如何select哈德逊和jenkins? , 哈德森vsjenkins在2012年 , 从用户angular度来看jenkins和哈德森之间最显着的区别是什么? 为更多。

其次,Ansible不是一个持续的整合引擎。 它(通常)不会轮询git仓库,并运行失败的编译方式。

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

如果你的机器环境和部署过程非常简单(比如在你的团队之外configuration的Heroku或Iron),Jenkins可能就足够了。 您可以编写一个自定义脚本,将其部署为最终构build步骤(或链接步骤)。

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

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

他们如何一起工作?

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

jenkins有什么select?

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

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

如果我们只关注软件,则CI通过代码更改成为被动调度程序triggeref,并触发“steps”的典型构build – validation – 释放 – 部署序列。

所以就软件而言,Ansible没有额外的“加糖”,只是一个运行事物的工具包,可以是那些步骤,但不是CI。 Ansible(没有塔)完全缺乏这种react native质。

如果你想和CI结婚,你可以。

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

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

Ansible塔可以在复杂的环境中有意义,有许多团队接触Ansible代码…事实是,我没有看到一个真正的理由来支付它。 但是,如果一个经理喜欢网页界面,没有什么能站得住脚,但是其他人使用它的逻辑。

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

🙂