Ruby on Rails的持续集成?[关闭]


149

我一直在寻找Ruby on Rails的持续集成解决方案,但是对结果并不太满意。我来自一家使用CruiseControl.NET的.NET商店,它的易用性和丰富的状态/报告确实让我宠坏了。

理想情况下,我正在寻找:

  • 明显的Git / SVN和Test :: Unit集成

  • 与Rake和/或Capistrano集成

  • Web界面显示构建状态

  • 电子邮件通知失败的版本。

  • 桌面通知(可能通过Growl)

  • REST API的构建状态

  • 用于运行其他代码分析工具并在UI中报告结果的插件框架


11
那么,三年后,您现在的选择是什么?
安德烈(Andrei)

3
我可以建议circleci.com吗?
Paul Biggar

Answers:


83

我刚刚浏览了这里的选项,并认为我会在2011年末汇总它们。

廉正

一个经过濒死体验留下的仍然链接到的网站过时的信息和被击落的演示现场,该项目再次有生命的火花。但是文档并没有继续进行,本教程中的很多步骤都被简单地破坏了;我不得不更改对宝石的引用,构建一些带外的东西,然后我仍然无法使其工作

巡航控制

很简单:只需下载它,运行命令行以添加您的项目(没有这样做的UI),然后运行Rails应用程序。但是,也没有用于编辑项目的UI,除了显示构建链接之外,还没有与构建工件进行真正的集成:您没有运行的测试图,趋势线等。我还必须调整routes.rb文件以获取代码链接正常工作(该resources :projects行需要移至所有其他非默认路由的下方)。

团队城市

看起来很棒,但是薪水表似乎不合时宜。3个代理免费,然后当您依赖时,您需要支付数百美元。个人构建看起来不错,但没有预算

詹金斯(妮· 哈德森

这是Java的坚强后盾,并且加载了上千个选项,因此UI令人困惑,并且设置项目非常麻烦。但是,一旦设置好,您将获得大量可以从大多数地方提取,运行任何内容并报告所有内容的插件。在OS X安装点詹金斯在/Users/Shared/Jenkins/Home,但无法创建目录或chowndaemon(这是在默认情况下使用,此时应更改为新的jenkins用户,所以你可以设置GitHub的整合)。

其他

我并没有真正尝试过这些,但以为我要提到原因:

  • CI Joe想要拥有比我想要的更多的GitHub存储库,它的创建者甚至没有使用它。他们在詹金斯上。
  • Cerberus看起来很小,但是没有UI,并且不会在其他人可以看到的地方自动发布构建工件。
  • BigTuna似乎是一个CruiseControl.rb克隆,没有(已经很少)社区支持。
  • 如果您使用JIRA和BitBucket,Bamboo看起来确实很整洁,但是我们都不使用。它确实可以部署,但我们已经在Capistrano中进行了设置。

选择

我们选择了詹金斯(Jenkins),但我真的希望其中一种轻量级的解决方案能够解决。


8
特拉维斯呢?
Vanuan 2012年

3
我从事的是一个封闭源代码项目,因此除非我误解了他们的(措辞不佳的)文档,否则Travis并不是我们的真正选择(我也不是向他们授予对GitHub项目的写访问权限的方式)。如果我正在写一些宝石,我会立刻跳上Travis,但不是实际的Rails网站。
塔拉玛

2
仅作记录,Travis CI即将发布已经处于Beta版的PRO(付费和私有)版本。小型项目的价格偏高,分别
Joshua Pinter

41

CruiseControl.rb怎么样?

做过CruiseControl(思想工作)并用文字书写的人群Ruby。非常易于使用,Rake可以集成其他工具,并且可以将ruby-growl gem用于通知。


我很难让它在Windows上运行...对我来说,并没有像网站上的“那不可能那么容易”视频中所宣传的那样起作用。
Gishu

我不会被thinkworks品牌打动-凭其优点来判断。
达菲德里斯

该项目直到最近才得到维护,自2009年以来没有发布过新版本...但是它可以正常工作。
Scott Schulthess

3
cruisecontrol非常原始且非常过时。
bragboy 2011年

1
考虑到截至2月初(2013年)的各种与安全相关的事件,将CruiseControl.rb保留为其默认配置(Gem版本等)是不合理的。我已经能够在Rails 3.0.20下运行它,但是3.2.11+显然将需要更多的工作。在这一点上,我非常愿意接受替代方案,其要求清单与Jim Fiorato的要求清单非常相似。
杰夫·迪基

27

您可能还需要考虑哈德森。尽管有很多可用的插件,包括对Ruby和Rake的支持,但它还是设计用于Java项目的。它具有非常有用的Web界面,并支持电子邮件通知以及许多其他通知(如Twitter或巨型熊灯)。

该社区也非常活跃,并且有几篇关于将Hudson与Selenium连接的文章,它们可能有助于在浏览器端测试Rails应用程序。

另一个要看的是Team City,它对小型项目和团队(包括商业)免费。我真的很喜欢Team City,并且以前在其他项目中使用过它,但是目前我们正在使用Mercurial进行源代码控制,而在考虑时,Team City的支持还只是beta。

我从CruiseControl.net切换到Team City,并且对此感到震惊。我之所以喜欢Hudson,是因为它具有相似的功能集和非常活跃的社区。


2
TC +1。传授我见过的最好的CI
Matt Briggs 2010年

4
请注意,由于与Oracle的创造性差异,Hudson在政治上会遇到一些麻烦。大部分开发人员似乎都在用叉子叫Jenkins。Oracle拥有员工,并将继续支持和发展Hudson。
dondo 2011年

4
好点dondo。如果您对跟踪哈德森的持续发展感兴趣,可以在jenkins-ci.org上
朱利安(Julian)

以下是詹金斯与哈德森开发活动的比较:ohloh.net/p/compare?project_0=
Vanuan 2012年

13

CircleRails(和其他Web应用程序)的高级CI服务。从您的列表中,它支持以下内容:

  • Git和Test :: Unit集成还包括RSpec,Cucumber,Jasmine,Konacha集成,并支持任意额外的测试命令
  • 与Rake和/或Capistrano集成使用Rake运行命令并设置数据库,使用Capistrano或Heroku或其他任何东西支持持续部署
  • Web界面显示构建状态
  • 电子邮件通知失败的版本。
  • 桌面通知通过CCMenu / CCTray
  • REST API的构建状态
  • 用于运行其他代码分析工具并在UI中报告结果的插件框架我们可以运行任意命令并提供支持,包括其状态作为构建的一部分

我和Joel在Stackoverflow播客上聊了一段时间- 快来看看


免责声明:Paul Biggar在Stackoverflow个人资料中指出,他创立了Circle


8

Semaphore是针对Ruby和Rails应用程序的新托管CI应用程序。它与GitHub集成,不需要设置,并且具有简单的UI。


我们将Semaphore用作CI套件的一部分,并且效果很好。您可以在我们的一篇博客文章中看到它如何与Jasmine和HipChat等其他软件集成。该操作人员还提到使用Capistrano作为部署工具。过去我们使用过它,但是对我们来说太慢了,所以我们改用Mina
denis.arunovic 2014年

8

2015年2月更新

代号

Drone.io缺乏开发,因此我转而使用Codeship,并且感到非常满意。它是积极开发和改进的,具有出色的设计并且非常快。另外,对于底层服务器,它实际上是免费的(每月最多生成100个版本),因此最终比Drone.io便宜。

原始答案

无人机

我只是使用http://drone.io/设置了我们的主要Ruby on Rails应用程序。简直是小菜一碟,而且界面很棒。如果您要寻找一个简单的托管解决方案,我想说一遍。


7

Tddium。Tddium支持Ruby应用程序的持续集成,部署和交互式测试。它提供了一个托管环境,支持Selenium,Headless Webkit和Solr。它托管实时Postgres,MySQL,Mongo和Redis实例。它会自动并行化大型测试套件。


5
杰伊,您可能想与tddium和solano实验室建立联系。根据常见问题解答:“您必须在答案中公开您的隶属关系”
tgf

7

Travis CI在红宝石世界变得很流行:http//travis-ci.org/


Travis CI适用于开源项目,但不适用于封闭源项目。詹金斯可以解决这两种情况:-)
Gabor Garami,2012年

1
但是不是开源的吗?github.com/travis-ci/travis-ci是否可以像使用jenkins一样设置您的私有travis实例?
Vanuan 2012年

您可能可以,但是在自述文件中,他们建议不要这样做,并提到它尚不适合私人托管。
安德鲁

现在适合封闭项目
aehlke


6

像很多人一样,我是cruisecontrol.rb的忠实拥护者,但是最近我的项目切换到了Integrity

轻巧且易于设置(非常类似于cc.rb),但具有更好的界面。


5
我只是试图设置“完整性”,而且一团糟。
劳伦斯


5

您可以试一下Codeship,看看它是否对您有用(我是创始人之一)

基于云的持续集成和部署(具有特殊的Heroku支持)

您的前四个项目已经实施,并且可以在许多公司中正常使用

  • 明显的Git / SVN和Test :: Unit集成
  • 与Rake和/或Capistrano集成
  • Web界面显示构建状态
  • 电子邮件通知失败的版本。

我们也在开发这些功能:

  • 桌面通知(可能通过Growl)
  • REST API的构建状态
  • 用于运行其他代码分析工具并在UI中报告结果的插件框架



3

自己做。编写bash脚本以运行测试,然后在测试通过的情况下运行部署过程。需要通知吗?在成功/失败时向自己发送纯文本电子邮件。需要调度程序吗?Cronjob。这是$ 0 / mo。,并且您会知道自己在做什么。我看不出每月向某人支付$ 40的费用将如何以任何更有效的方式帮助我做到这一点。

例如,请考虑:我的部署因配置错误的资产管道而失败(资产无法预编译)。单元,功能,集成,回归或任何其他测试都不会涉及到这一点。CI不会捕获此错误。我花在编写bash脚本上的时间可能少于我在设置CI环境上花费的时间,而且我会为自己节省40美元/月。

Juuuuust把我的两个便士投入了讨论; )


1

运行代码运行可能是您需要的。

编辑:链接已删除,因为它不再引用以前的Run Code Run网站。


1
现在即将关闭。:(
Andrew Grimm


1

我只喜欢CI Joe,其他所有方面都遇到了问题,CI Joe是完成工作的绝对最低要求,超级敏捷且可靠。哈德逊消息来源太可怕了,用户界面对我没有吸引力。


0

我刚刚发布了一个非常简单的RubyOnRails + SVN / GIT持续集成应用程序。也许您应该尝试一下:

http://github.com/felipegiotto/Inotegration/tree/master

我考虑了一些测量和测试工具的想法,在尝试了一些CI工具并且不喜欢其中任何一个工具之后,我决定构建自己的工具,而无需构建大型XML文件或任何其他配置。就是Rails成为的样子。

如果您愿意,请给我一些反馈。

最好的祝福,

费利佩·乔托(Felipe Giotto)。


0

如果您订阅“经常提交”的理念,那么在每次提交之后运行CI似乎相当昂贵。每隔几个小时运行一次简单的cronjob并将结果通过电子邮件发送到开发者邮件列表如何?


或者,如何将您的CI服务器设置为每小时仅轮询一次更改?大多数CI应用程序都支持此设置。
jerhinesmith

2
使用git,您可以经常提交但很少推送。
Vanuan 2012年

0

我只是为此配置了一个哈德森/詹金斯。ci_reporter gem可以帮助设置JUnit输出的格式(Hudson期望的格式),并且Hudson具有Rails插件,因此我可以看到rcov覆盖率,测试报告,rails stat等等。


您能否将您的设置与其他替代方案进行比较?
安德烈(Andrei)

由于我在生产项目中使用Rails 2.3.x,目前还没有,因为大多数其他选择都需要Rails3.x。但是,如果可以,我将对其进行测试并发布我的经验。
Gabor Garami 2011年

我也尝试过用Rails 3.x进行Jenkins,并且效果很好。我也尝试了其他解决方案(例如IntegrityApp),但是由于我使用Jenkins测试其他项目,因此它也成为了最终的解决方案。这并不意味着IntegrityApp或其他东西不好,IntegrityApp是非常好的东西,但是我更喜欢Jenkins。
Gabor Garami

0

您还应该考虑查看CloudMunch。这提供了一个多语言平台,可让您将不同的语言作为代码库的一部分,并带有丰富的构建元数据集。

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.