Ruby on Rails的持续集成?

我一直在寻找Ruby on Rails的持续集成解决scheme,但对结果并不满意。 我来自一个使用CruiseControl.NET的.NET商店,它的易用性和丰富的状态/报告非常令人厌恶。

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

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

  • 与Rake和/或Capistrano集成

  • 显示构build状态的Web界面

  • 电子邮件通知失败的构build。

  • 桌面通知(可能通过咆哮)

  • 用于构build状态的REST API

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

我刚刚在这里select了这些选项,并认为我会在2011年底之前把它们卷起来。

廉正

经过一段濒临死亡的经历 ,让这个仍然连接到网站的 信息过时 ,并将演示网站击倒,这个项目再次焕发了生机。 但是文档还没有开始, 本教程中的很多步骤都是简单的破解 ; 我不得不改变对gem的引用,在带外创build一些东西,然后我仍然无法得到它的工作

克鲁斯Control.rb

死简单 :你只要下载它,运行一个命令行来添加你的项目( 没有这样做的用户界面 ),并运行Rails应用程序。 但是,也没有用于编辑项目的UI,除了显示链接之外, 没有任何与构build工件的真正集成 :没有运行testing图,也没有趋势线等。我还必须调整routes.rb文件代码链接工作( resources :projects行需要移动到所有其他非默认路由下面)。

TeamCity的

看起来棒极了 ,但薪酬水平似乎出了问题。 3代理免费,然后当你依赖你需要花费数百美元。 个人构build看起来不错,但没有预算

jenkins (néeHudson)

这是一个Java stalwart,它装载了一千个选项 ,所以用户界面很混乱 ,这是设置您的项目一件苦差事 。 但是一旦你设置了它,你会得到大量的插件 ,可以从任何地方拉大多数东西,运行大部分东西,并报告大部分内容。 OS X安装程序在/Users/Shared/Jenkins/Home处指向Jenkins,但是无法创build该目录或将其指定为daemon (默认情况下使用该目录,您应该更改为新的jenkins用户,以便设置GitHub集成) 。

其他

我没有真正尝试这些,但是我想我会说为什么:

  • CI Joe想拥有比我想要的更多的GitHub回购,而它的创造者甚至没有使用它; 他们在jenkins。
  • Cerberus看起来整齐小巧,但没有UI,不会自动发布构build工件,其他人可以看到它们。
  • BigTuna似乎是CruiseControl.rb克隆,没有(已经很小)的社区支持。
  • 如果您使用JIRA和BitBucket, Bamboo看起来非常整洁,但我们都不使用。 它部署,但我们已经在Capistrano成立。

select

我们和jenkins一起去了,但我真的希望有一个轻量级的解决scheme已经解决了。

CruiseControl.rb怎么样?

CruiseControl (thoughtworks)相同的用Ruby编写的人群。 很容易使用Rake来集成其他工具,并可以使用ruby-growl gem来进行通知。

你也可以考虑哈德森 。 它被devise用于Java项目,虽然有很多插件可用,包括支持Ruby和Rake。 它有一个非常有用的networking界面,并支持电子邮件通知以及许多其他(如Twitter或巨熊灯)。

社区也非常活跃,有几篇文章将Hudson和Selenium联系起来,这对于在浏览器端testingRails应用程序可能是有帮助的。

另一个看看Team City是免费的小项目和团队(包括商业)。 我真的很喜欢Team City,之前用过其他项目,但是现在我们使用Mercurial进行源代码pipe理,而Team City的支持在我们考虑的时候还是有点过于testing。

我从CruiseControl.net切换到Team City,对改进感到非常震惊。 我偏爱Hudson,因为它具有类似的function和非常活跃的社区。

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

  • Git和Test :: Unit集成也RSpec,黄瓜,茉莉,Konacha集成,并支持任意额外的testing命令
  • 与Rake和/或Capistrano集成使用Rake运行命令并设置数据库,支持使用Capistrano或Heroku进行连续部署
  • 显示构build状态的Web界面
  • 电子邮件通知失败的构build。
  • 桌面通知通过CCMenu / CCTray
  • 用于构build状态的REST API
  • 用于在UI中运行其他代码分析工具和报告结果的插件框架我们可以运行任意命令和支持,包括它们的状态作为构build的一部分

Joel和我花了一段时间在Stackoverflow播客上聊聊这件事 – 看看吧 !


(编辑)免责声明:Paul Biggar在他的Stackoverflowconfiguration文件中创build了Circle

信号量是Ruby和Rails应用程序的一个新的托pipeCI应用程序。 它与GitHub集成,不需要安装,并具有简单的用户界面。

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

2015年2月更新

Codeship

Drone.io缺乏发展,所以我转而使用Codeship,我非常享受它。 积极发展和完善,devise精良,速度非常快。 另外,对于底层,它实际上是免费的(每月最多100个版本),所以最终比Drone.io便宜。

原始答复

Drone.io

我只是用http://drone.io/设置我们的Ruby on Rails应用程序。 是一块蛋糕,它有一个很好的界面。 如果你正在寻找一个简单的,托pipe的解决scheme,我会说值得检查。

那么cruisecontrol.rb就是完美的搭配。

http://cruisecontrolrb.thoughtworks.com/

像许多人一样,我是cruisecontrol.rb的粉丝,但是最近把我的项目转到了Integrity 。

轻量级和易于安装(很像cc.rb),但有一个更好的界面。

特拉维斯CI已经在ruby世界stream行: http : //travis-ci.org/

用Ruby编写的BigTuna使用Rails,并将其自身用作其configuration项。

你可以给Codeship一个旋转,看看它是否适合你(我是创始人之一)

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

您的项目的前四个已经实施,并为一些公司工作良好

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

我们也在研究这些function:

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

诚信似乎是一个很好的解决scheme。 部署到heroku是一件轻而易举的事情: http : //elabs.se/blog/7-continuous-integration-testing-for-ruby-on-rails-with-integrity http://integrityapp.com

这里没人提到Atlassian的Bamboo。 有一篇关于使用Bamboo的Ruby on Rails CI的类似教程的文章:

http://blogs.atlassian.com/news/2009/05/bamboo_customer_8.html

自己做。 编写一个bash脚本来运行testing,然后运行一个部署过程,如果testing通过。 需要通知? 在成功/失败的情况下向自己发送明文电子邮件。 需要调度程序? 的cronjob。 这是$ 0 /月,你会知道你在做什么。 我不明白如何付给每个人40美元/月能帮助我以更高效的方式做到这一点。

考虑例如:我的部署失败,因为configuration不正确的资产pipe道(资产无法预先编译)。 这不会被单元,function,集成,回归或任何其他testing所捕捉。 这个错误不会被CI捕获。 我花时间写一个bash脚本的时间可能会less于我花在设置CI环境上的时间,我会为自己节省$ 40 /月。

Juuuuuust把我的两个硬币扔进讨论中; )

运行代码运行可能是你所需要的。

编辑:链接删除,因为它不再指以前的运行代码运行的网站。

然后, CI乔 :

这就像一辆旧生锈的皮卡车:它可能是臭的和粗糙的,但它完成了工作。

我们每天使用它。

我只喜欢CI乔,其余的我都有问题,CI乔是完成工作的绝对最低限度,超级敏捷和可靠。 哈德森来源是可怕的,用户界面不吸引我。

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

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

我对测量和testing工具有了一些想法,在尝试了一些CI工具而不喜欢其中的任何一种工具之后,我决定自己构build,而不需要构build大的XML文件或任何其他configuration。 就像Rails所做的那样。

如果你喜欢,请给我一些反馈..

最好的祝福,

菲利普乔托。

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

我只是为它configuration了一个Hudson / Jenkins。 ci_reporter gem可以帮助格式化JUnit输出,Hudson预期的是什么,Hudson有一个Rails插件,所以我可以看到rcov的覆盖率,testing报告,轨道统计数据甚至更多。

你也应该考虑一下CloudMunch。 这提供了一个多语言平台,使您可以将不同的语言作为代码库的一部分,并提供丰富的构build元数据。