我一直在寻找Ruby on Rails的持续集成解决方案,但是对结果并不太满意。我来自一家使用CruiseControl.NET的.NET商店,它的易用性和丰富的状态/报告确实让我宠坏了。
理想情况下,我正在寻找:
明显的Git / SVN和Test :: Unit集成
与Rake和/或Capistrano集成
Web界面显示构建状态
电子邮件通知失败的版本。
桌面通知(可能通过Growl)
REST API的构建状态
用于运行其他代码分析工具并在UI中报告结果的插件框架
我一直在寻找Ruby on Rails的持续集成解决方案,但是对结果并不太满意。我来自一家使用CruiseControl.NET的.NET商店,它的易用性和丰富的状态/报告确实让我宠坏了。
理想情况下,我正在寻找:
明显的Git / SVN和Test :: Unit集成
与Rake和/或Capistrano集成
Web界面显示构建状态
电子邮件通知失败的版本。
桌面通知(可能通过Growl)
REST API的构建状态
用于运行其他代码分析工具并在UI中报告结果的插件框架
Answers:
我刚刚浏览了这里的选项,并认为我会在2011年末汇总它们。
一个经过濒死体验留下的仍然链接到的网站与过时的信息和被击落的演示现场,该项目再次有生命的火花。但是文档并没有继续进行,本教程中的很多步骤都被简单地破坏了;我不得不更改对宝石的引用,构建一些带外的东西,然后我仍然无法使其工作。
很简单:只需下载它,运行命令行以添加您的项目(没有这样做的UI),然后运行Rails应用程序。但是,也没有用于编辑项目的UI,除了显示构建链接之外,还没有与构建工件进行真正的集成:您没有运行的测试图,趋势线等。我还必须调整routes.rb
文件以获取代码链接正常工作(该resources :projects
行需要移至所有其他非默认路由的下方)。
这看起来很棒,但是薪水表似乎不合时宜。3个代理免费,然后当您依赖时,您需要支付数百美元。个人构建看起来不错,但没有预算。
这是Java的坚强后盾,并且加载了上千个选项,因此UI令人困惑,并且设置项目非常麻烦。但是,一旦设置好,您将获得大量可以从大多数地方提取,运行任何内容并报告所有内容的插件。在OS X安装点詹金斯在/Users/Shared/Jenkins/Home
,但无法创建目录或chown
它daemon
(这是在默认情况下使用,此时应更改为新的jenkins
用户,所以你可以设置GitHub的整合)。
我并没有真正尝试过这些,但以为我要提到原因:
我们选择了詹金斯(Jenkins),但我真的希望其中一种轻量级的解决方案能够解决。
CruiseControl.rb怎么样?
做过CruiseControl
(思想工作)并用文字书写的人群Ruby
。非常易于使用,Rake
可以集成其他工具,并且可以将ruby-growl gem用于通知。
您可能还需要考虑哈德森。尽管有很多可用的插件,包括对Ruby和Rake的支持,但它还是设计用于Java项目的。它具有非常有用的Web界面,并支持电子邮件通知以及许多其他通知(如Twitter或巨型熊灯)。
该社区也非常活跃,并且有几篇关于将Hudson与Selenium连接的文章,它们可能有助于在浏览器端测试Rails应用程序。
另一个要看的是Team City,它对小型项目和团队(包括商业)免费。我真的很喜欢Team City,并且以前在其他项目中使用过它,但是目前我们正在使用Mercurial进行源代码控制,而在考虑时,Team City的支持还只是beta。
我从CruiseControl.net切换到Team City,并且对此感到震惊。我之所以喜欢Hudson,是因为它具有相似的功能集和非常活跃的社区。
Circle是Rails(和其他Web应用程序)的高级CI服务。从您的列表中,它支持以下内容:
我和Joel在Stackoverflow播客上聊了一段时间- 快来看看!
免责声明:Paul Biggar在Stackoverflow个人资料中指出,他创立了Circle
Drone.io缺乏开发,因此我转而使用Codeship,并且感到非常满意。它是积极开发和改进的,具有出色的设计并且非常快。另外,对于底层服务器,它实际上是免费的(每月最多生成100个版本),因此最终比Drone.io便宜。
我只是使用http://drone.io/设置了我们的主要Ruby on Rails应用程序。简直是小菜一碟,而且界面很棒。如果您要寻找一个简单的托管解决方案,我想说一遍。
Travis CI在红宝石世界变得很流行:http://travis-ci.org/
cruisecontrol.rb将是完美的选择。
您可以试一下Codeship,看看它是否对您有用(我是创始人之一)
基于云的持续集成和部署(具有特殊的Heroku支持)
您的前四个项目已经实施,并且可以在许多公司中正常使用
我们也在开发这些功能:
这里没有人提到Atlassian的Bamboo。有一篇不错的关于使用Bamboo的Ruby on Rails CI的类教程文章:
http://blogs.atlassian.com/news/2009/05/bamboo_customer_8.html
诚信似乎是一个很好的解决方案。轻松部署到heroku上:http : //elabs.se/blog/7-continuous-integration-testing-for-ruby-on-rails-with-integrity http://integrityapp.com
自己做。编写bash脚本以运行测试,然后在测试通过的情况下运行部署过程。需要通知吗?在成功/失败时向自己发送纯文本电子邮件。需要调度程序吗?Cronjob。这是$ 0 / mo。,并且您会知道自己在做什么。我看不出每月向某人支付$ 40的费用将如何以任何更有效的方式帮助我做到这一点。
例如,请考虑:我的部署因配置错误的资产管道而失败(资产无法预编译)。单元,功能,集成,回归或任何其他测试都不会涉及到这一点。CI不会捕获此错误。我花在编写bash脚本上的时间可能少于我在设置CI环境上花费的时间,而且我会为自己节省40美元/月。
Juuuuust把我的两个便士投入了讨论; )
我只喜欢CI Joe,其他所有方面都遇到了问题,CI Joe是完成工作的绝对最低要求,超级敏捷且可靠。哈德逊消息来源太可怕了,用户界面对我没有吸引力。
我刚刚发布了一个非常简单的RubyOnRails + SVN / GIT持续集成应用程序。也许您应该尝试一下:
http://github.com/felipegiotto/Inotegration/tree/master
我考虑了一些测量和测试工具的想法,在尝试了一些CI工具并且不喜欢其中任何一个工具之后,我决定构建自己的工具,而无需构建大型XML文件或任何其他配置。就是Rails成为的样子。
如果您愿意,请给我一些反馈。
最好的祝福,
费利佩·乔托(Felipe Giotto)。
如果您订阅“经常提交”的理念,那么在每次提交之后运行CI似乎相当昂贵。每隔几个小时运行一次简单的cronjob并将结果通过电子邮件发送到开发者邮件列表如何?
我只是为此配置了一个哈德森/詹金斯。ci_reporter gem可以帮助设置JUnit输出的格式(Hudson期望的格式),并且Hudson具有Rails插件,因此我可以看到rcov覆盖率,测试报告,rails stat等等。