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就是完美的搭配。
像许多人一样,我是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元数据。