最近,我们公司决定使用 Ansible 进行部署和持续集成,但是当我开始使用Ansible时,我没有找到使用Maven构建Java项目的模块,也没有找到运行JUnit测试或JMeter测试的模块。
所以,我处于一种怀疑的状态:可能是我用错了Ansible
当我看Jenkins的时候,它可以做构建、运行测试、部署等事情。哈德逊缺少的是在AWS这样的云环境中创建/删除示例。
那么,总的来说,我们需要使用Ansible/Jenkins做什么?对于CI,我需要使用Ansible和Jenkins的组合吗?
请说明Ansible的正确用法。
2条答案
按热度按时间aurhwmvo1#
首先,Jenkins和哈德逊基本上是同一个项目,下面我将把它称为Jenkins,更多信息请参见How to choose between Hudson and Jenkins?、Hudson vs Jenkins in 2012和What 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。
e5njpo682#
Ansible只是一个"美化的SSH循环",CI不仅仅是软件运行,而是成功和失败如何处理,谁得到通知,以及更改如何合并到目标版本控制的整个过程。
如果我们只关注软件,CI是一个由代码更改触发的React性调度程序,并触发典型的构建-验证-发布-部署"步骤"序列。
所以在软件方面,没有额外的"sugaring"的Ansible只是一个运行东西的工具包,可以是那些步骤,但它不是CI。Ansible(没有塔)完全缺乏这种React性。
如果你想让安赛波和CI联姻,你可以。
Ansible塔是一个非常面向Ansible的调度器,但是如果你需要CI软件,我想你不一定需要它,任何能够运行shell脚本的CI应用程序都能够启动Ansible剧本。
然而,与Ansible塔不同的是,CI工具知道显示所有测试框架的测试报告、触发通知等。
Ansible塔在一个有很多团队都在使用Ansible代码的复杂环境中是有意义的......事实上,我还没有看到一个真正的理由为它付费。但如果一个经理喜欢这个网络界面,那么没有什么能经得起"但其他人使用它"的逻辑。
我怀疑Ansible塔的概念是对傀儡企业的回应。
:)