Travis CI with Rails

相信用过github的同学都经常看到这个标志,熟悉agile中持续集成的同学会立即想到这是一个build success的版本,那背后的CI server是什么,为什么越来越多的Project都用上了这个小标志/产品?

###Travis CI

Travis 是一个分布式的构建系统,至力于为Ruby社区打造一个开源(基于Rails)、分布式的构建系统:

-允许开源项目使用,并在其上执行测试
-允许用户将构建工作放到一个低负荷的虚拟机上执行

Travis CI是采用Rails并为Rails所写的一个开源CI工具,目前已经开始支持Node.js了,以Github为依托,为Github上的站点提供免费的持续集成服务。

###Who is Using

Rails,RSpec, Cucumber, Devise, Mocha, Compass, Sprockets, OmniAuth, Mongoid, Json, Webmock, CanCan, Whenever…

###How to Start

打开 travis-ci.org,注册是会出现github的授权页面,这样,travis-ci就能对代码进行读写操作,第一次/每次代码改变都会触发travis-ci的响应,去拿最新的代码,然后按照配置去运行相关的测试。

完完全全的一个云集续集成服务,相对于CruiseControl, TeamCity,对于小团队来说,爽呆了,而且上手非常快。

原理很是简单,如何让项目支持travis-ci,只要添加一个.travis.yml到项目根目录即可。下面是一个完整的示例,从rails/rails项目下复制而来的。

####.travis.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
script: 'ci/travis.rb'
rvm:
- 1.8.7
- 1.9.2
- 1.9.3
env:
- "GEM=railties"
- "GEM=ap,am,amo,ares,as"
- "GEM=ar:mysql"
- "GEM=ar:mysql2"
- "GEM=ar:sqlite3"
notifications:
email: false
irc:
on_success: change
on_failure: always
channels:
- "irc.freenode.org#rails-contrib"
bundler_args: --path vendor/bundle

最后,不得不说,我爱死这帮家伙了。。。

###REF::

http://travis-ci.org/
http://talk-2011-lyon.heroku.com/
http://github.com/travis-ci