安赛尔是否可以替代 Hudson/Jenkins 这样的 CI 工具?

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

因此,我处于一种怀疑的状态: 也许我在错误地使用安塞尔。

当我研究 Jenkins 的时候,它可以做构建、运行测试和部署之类的事情。Hudson 缺少的是在云环境(如 AWS)中创建/删除实例。

那么,总的来说,我们需要使用 Ansible/Jenkins 的目的是什么呢?对于 CI,我需要使用 Ansible 和詹金斯的组合吗?

请说明一下 Ansible 的正确用法。

44845 次浏览

首先,詹金斯和哈德森基本上是同一个项目。我在下面称之为詹金斯。有关更多信息,请参见 如何在 Hudson 和 Jenkins 之间做出选择?2012年 Hudson 对 Jenkins从用户的角度来看,Jenkins 和 Hudson 之间最显著的区别是什么?

其次,安赛博并不意味着是一个持续集成引擎。它(通常)不投票 git 回购和运行以正常方式失败的构建。

我什么时候可以直接用詹金斯?

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

我什么时候可以简单地使用安塞尔?

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

他们是如何一起工作的?

一个好的组合是使用 Jenkins 来构建、测试和保存工件。添加一个步骤来调用 AnsibleTower 或 AnsibleTower 来处理实际的部署过程。这使得 Ansible 能够处理 机器的配置,并让詹金斯处理 CI 流程。

除了詹金斯还有什么选择?

我强烈推荐 思维工作室,开始(不要与 Go 语言混淆)而不是 Jenkins。其他包括 CruiseControl、 TravisCI 和 Integrity。

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

如果我们只关注软件,CI 就是一个由代码更改触发的反应式调度程序,触发典型的构建-验证-发布-部署“步骤”序列。

因此,就软件而言,没有额外“糖化”的可视化只是一个运行事物的工具箱,可以是那些非常步骤,但它不是 CI。 安塞尔(没有塔)完全缺乏这种反应性质。

如果你想让安塞波和线人结婚,你可以的。

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

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

在一个复杂的环境中,有许多群体接触到安赛尔的代码,安赛尔塔就有意义了... ... 事实上,我还没有看到一个真正的理由来支付它。但是,如果一个经理喜欢网页界面,那么“别人用它”的逻辑就站不住脚了。

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

:)