Ruby on Rails的持续集成?

时间:2008-10-21 03:16:55

标签: ruby-on-rails ruby continuous-integration

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

理想情况下我正在寻找:

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

  • 与Rake和/或集成 Capistrano的

  • 显示状态的网络界面 构建

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

  • 桌面通知(可能 通过低吼)

  • 用于构建状态的REST API

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

23 个答案:

答案 0 :(得分:83)

我刚刚通过这里的选项,并认为我将在2011年底推出它们。

Integrity

濒死体验之后,仍然链接到website 过时的信息并击败了演示网站,此项目有一个火花生命再次。但是文档还没有继续下去,教程中的很多步骤都很简单;我不得不改变对宝石的引用,在带外构建一些东西,然后我仍然无法使其工作

Cruise Control.rb

死简单:您只需下载它,运行命令行添加您的项目(无UI 这样做),并运行Rails应用程序。但是也没有用于编辑项目的UI,除了显示链接之外,没有与构建工件的真正集成:你没有得到测试运行的图表,没有趋势线等等。我也有调整routes.rb文件以使代码链接起作用(resources :projects行需要移动到所有其他非默认路由之下)。

TeamCity

看起来很棒,但薪资水平看起来并不严重。 3个代理商免费,然后当你依赖时,你需要花费数百美元。 个人构建看起来很棒,但没有预算

Jenkins(néeHudson

这是一个Java坚定不移的加载了一千个选项,因此用户界面令人困惑,这是一个苦差事来设置你的项目< / strong>即可。但是一旦你设置了它,就会得到一个全部插件,它可以从大多数地方拉出来,运行大多数东西,并报告大部分内容。 OS X安装程序将Jenkins指向/Users/Shared/Jenkins/Home但未能创建该目录,或chown将其创建为daemon(默认情况下使用该目录,您应该更改为新的jenkins用户,这样你就可以设置GitHub集成。)

其他

我没有真正尝试这些,但我想我会提到原因:

  • CI Joe想要拥有比我想要的更多的GitHub回购,它的创造者甚至不使用它;他们在詹金斯身上。
  • Cerberus看起来很小,但没有用户界面,并且不会自动发布其他人可以看到的构建工件。
  • BigTuna似乎是没有(已经很小的)社区支持的CruiseControl.rb克隆。
  • 如果你使用JIRA和BitBucket,
  • Bamboo看起来很整洁,但我们都没用。它确实部署了,但我们已经在Capistrano中设置了这些。

选择

我们选择了Jenkins,但我真的希望有一个更轻量级的解决方案。

答案 1 :(得分:41)

CruiseControl.rb怎么样?

同样的人群CruiseControl(思考)并写在Ruby。非常容易使用Rake来集成您的其他工具,并可以使用ruby-growl gem来发送通知。

答案 2 :(得分:27)

您可能还想考虑Hudson。它设计用于Java项目,尽管有很多插件可用,包括对Ruby和Rake的支持。它有一个非常有用的网络界面,支持电子邮件通知以及许多其他(如twitter或巨型熊灯)。

社区也非常活跃,并且已经several articles使用Selenium连接Hudson,您可能有助于在浏览器端测试Rails应用程序。

另一个看法是Team City,对小型项目和团队(包括商业)免费。我非常喜欢Team City,并且之前已经将它用于其他项目,但目前我们正在使用Mercurial进行源代码控制,而Team City的支持在我们考虑它时有点过于测试。

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

答案 3 :(得分:14)

Circleadvanced CI service for Rails(以及其他网络应用)。从您的列表中,它支持以下内容:

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

Joel和我在Stackoverflow podcast - check it out上花了一段时间聊聊这个!


(编辑)免责声明:Paul Biggar在他的Stackoverflow个人资料中陈述了Circle,

答案 4 :(得分:8)

2015年2月更新

Codeship

Drone.io缺乏开发,所以我切换到Codeship,我非常享受它。它积极开发和改进,设计精良,速度非常快。另外,对于底层,它实际上是免费的(每月最多100个版本),所以它最终比Drone.io便宜。

原始答案

Drone.io

我只使用http://drone.io/设置我们的主要Ruby on Rails应用程序。是一块蛋糕,它有一个很棒的界面。如果您正在寻找一个简单的托管解决方案,我会说值得一试。

答案 5 :(得分:8)

Semaphore是适用于Ruby和Rails应用的新托管CI应用。它与GitHub集成,无需设置,并具有简单的用户界面。

答案 6 :(得分:7)

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

答案 7 :(得分:7)

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

答案 8 :(得分:6)

cruisecontrol.rb将是当时的完美搭档。

http://cruisecontrolrb.thoughtworks.com/

答案 9 :(得分:6)

像许多人一样,我是cruisecontrol.rb的忠实粉丝,但最近我将项目转换为Integrity

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

答案 10 :(得分:5)

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

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

您的前四个项目已经实施,并且适用于多家公司

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

我们正在研究这些功能:

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

答案 11 :(得分:5)

BigTuna - 用Ruby编写,使用Rails并将自己用作CI。

答案 12 :(得分:3)

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

答案 13 :(得分:3)

自己动手。编写一个bash脚本来运行测试,然后在测试通过时运行部署过程。需要通知?在成功/失败时拍摄自己的明文电子邮件。需要调度程序?的cronjob。这是0美元/月,您将了解自己在做什么。我不知道如果付给别人40美元/月的费用会帮助我以更高效的方式做到这一点。

例如考虑:由于资源管道配置不正确,我的部署失败(资产无法预编译)。这不会被单元,功能,集成,回归或任何其他测试所捕获。 CI不会捕获此错误。我花在编写bash脚本上的时间可能少于我花在设置CI环境上的时间,而且我将节省40美元/月。

Juuuuuust把我的两便士投入讨论; )

答案 14 :(得分:3)

这里没人提到Atlassian的竹子。有一篇很好的教程文章,关于使用Bamboo的Ruby on Rails CI:

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

答案 15 :(得分:3)

答案 16 :(得分:1)

我只喜欢CI乔,我和其他所有人都有问题, CI Joe是完成工作的最低要求, 超级敏捷,可靠。哈德逊的来源太可怕了, 用户界面不吸引我。

答案 17 :(得分:1)

然后,有CI Joe

  

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

我们每天都在使用它。

答案 18 :(得分:1)

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

编辑: 链接已删除,因为它不再引用以前的运行代码运行站点。

答案 19 :(得分:0)

我刚为它配置了Hudson / Jenkins。 ci_reporter gem可以帮助格式化JUnit输出,Hudson所期望的,Hudson有一个Rails插件,所以我可以看到rcov覆盖,测试报告,rails stats甚至更多。

答案 20 :(得分:0)

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

答案 21 :(得分:0)

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

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

我采用了一些测量和测试工具的想法,在尝试了一些CI工具而不喜欢其中任何一个之后,我决定构建自己的工具,而不需要构建大的XML文件或任何其他配置。就像Rails一样。

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

致以最诚挚的问候,

Felipe Giotto。

答案 22 :(得分:0)

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