持续集成服务托管Travis CI入门
摘要 </span>持续集成也可以作为服务被托管。这篇文章是对官方的入门文档的翻译:http://docs.travis-ci.com/user/getting-started/ Travis CI是一个持续集成的托管服务。目前已经集成Github,并支持以下类型的项目: Travis CI构建环境为不同的语言提供多种不同的运行时,如多版本的Ruby,PHP,Node.js。同时,它还提供多种数据库和常用工具,如消息中间件。 你可以很轻松在一种或多种语言甚至多种数据库环境下测试你的项目。 首先使用你的Github帐户登录Travis CI。访问Travis CI并点击页面顶部的Sign In连接。 注意,在http://travis-ci.org,你只能看到你的公开仓库,而在http://travis-ci.com,你可以看你的私有仓库。 登录的时候,GitHub会询问是否允许我们访问你的GitHub权限。在这里有更详细的关于Github权限的描述。 登录后,我们将会从GitHub同步你的仓库,包括你的开源项目或私有项目。 你可以看到你所有的可访问的机构,仓库。只要你是仓库的管理员,你都可以开启服务钩子(service hook)。 接着,开启它们。https://travis-ci.org/profile 为了让Travis CI构建你的项目,你必须告诉它一些必须的信息。你需要在仓库的根目录添加名为.travis.yml的文件。 在本次指南中,我们只涉及基本的.travis.yml选项。其中最重要的就是language了。它用于告诉Travis CI你的项目使用哪种语言环境。 Ruby项目比起Clojure或PHP项目需要用到更多的不同构建工具和实践,所以Travis CI需要知道如何去构建。 如果.travis.yml文件不存在仓库中、拼写错误、不是一个有效的YAML文件,Travis CI会忽略它,同时假设它是使用Ruby语言,所有其它选项也都将使用默认值。 language的值是区别大小写的,如果你这样:language: C,你的Ruby项目一样会被当成Ruby项目。 以下是一些基本的.travis.yml例子: 更多C语言的.travis.yml选项 更多C++语言的.travis.yml选项 使用Leiningen 1的: 使用Leiningen 2的: 更多clojure语言的.travis.yml选项 更多Erlang语言的.travis.yml选项 更多Haskell语言的.travis.yml选项 更多Go语言的.travis.yml选项 更多Groovy 语言的.travis.yml选项 更多Java语言的.travis.yml选项 更多Node.js语言的.travis.yml选项 更多Objective-C语言的.travis.yml选项 更多Perl语言的.travis.yml选项 更多PHP语言的.travis.yml选项 更多Python语言的.travis.yml选项 更多Ruby语言的.travis.yml选项 更多Scala语言的.travis.yml选项 建议你使用travis-lint(命令行工具)或者.travis.yml validation Web app去校验你的.travis.yml文件。 travis-lint需要你已经安装Ruby 1.8.7+和RubyGems。通过以下命令安装: 校验.travis.yml: travis-lint会检查以下内容: 等等,travis-lint是你的好朋友。 只要GitHub的钩子已经安装,你向GitHub Push你的commit,.travis.yml已经加入到你的仓库,Travis CI就会添加一个构建到构建队列中。有针对你项目语言的空闲工作线程时就会执行。 可以通过commit和push来启动构建,或者在GitHub Web钩子(WebHook)及服务页使用"Test Hook"按钮。请注意,你无法使用Test Hook按钮来触发第一次构建,第一次只能通过push触发。 你的项目需要一些自定义的构建过程。也许你在运行测试前需要创建数据库或你的构建工具不同于Travis CI提供的。不用担心,Travis CI允许你覆盖所有的选项。 当修改.travis.yml后,请确保它是一个有效的YAML文件,同时使用travis-lint来校验它。 Travis CI的工作进程提供的服务的相关信息,你也许会用到。信息包括有MySQL, PostgreSQL,MongoDB,Redis,CouchDB,RabbitMQ,memcached等等。 通过学习Database setup,在测试套件中配置数据库连接。这里有更多的测试变量信息。 你可以免费加入我们的IRC频道,并提问。我们就在那。 :) 前段时间,我也想过做这么一个可以正交测试环境来测试应用的东西。只不过,我想到的是使用Gradle、Docker、Jenkins的结合。呵呵。你想到的,也会有别人想到。 翻译地过程中,我起了一个疑问,多语言的项目,怎么办。当然,多语言的项目的构建会是非常复杂,但真正需要这样的构建的公司世界也没几家。所以,Travis CI目前也没有必要去支持。 前段时间和大学校友交流,发现他还活在手工找Jar包的时代。他说他身边也没有人使用Maven等构建工具。所以,你想推Travis CI这样的工具,难度也非常的大。你首先需要改变人们观点,让他们觉得构建工具可以解决很多问题的,然后再推构建工具,最后才到持续集成。
Travis CI 介绍
第一步:登录:
第二步:激活GitHub的web钩子(Webhook)
译注:开启路径:https://travis-ci.org/profile
第三步:添加.travis.yml文件到你的仓库
注意
C
language: c compiler: - gcc - clang # Change this to your needs script: ./configure && make
C++
language: cpp compiler: - gcc - clang # Change this to your needs script: ./configure && make
Clojure
language: clojure jdk: - oraclejdk7 - openjdk7 - openjdk6
language: clojure lein: lein2 jdk: - openjdk7 - openjdk6
Erlang
language: erlang otp_release: - R15B02 - R15B01 - R14B04 - R14B03
Haskell
language: haskell
Go
language: go
Groovy
language: groovy jdk: - oraclejdk7 - openjdk7 - openjdk6
Java
language: java jdk: - oraclejdk7 - openjdk7 - openjdk6
Node.js
language: node_js node_js: - "0.10" - "0.8" - "0.6"
Objective-C
language: objective-c
Perl
language: perl perl: - "5.16" - "5.14" - "5.12"
PHP
language: php php: - "5.5" - "5.4" - "5.3"
Python
language: python python: - "3.3" - "2.7" - "2.6" # command to install dependencies, e.g. pip install -r requirements.txt --use-mirrors install: PLEASE CHANGE ME # command to run tests, e.g. python setup.py test script: PLEASE CHANGE ME
Ruby
language: ruby rvm: - "1.8.7" - "1.9.2" - "1.9.3" - jruby-18mode # JRuby in 1.8 mode - jruby-19mode # JRuby in 1.9 mode - rbx # uncomment this line if your project needs to run something other than `rake`: # script: bundle exec rspec spec
Scala
language: scala scala: - "2.9.2" - "2.8.2" jdk: - oraclejdk7 - openjdk7 - openjdk6
校验.travis.yml
gem install travis-lint
# inside a repository with .travis.yml travis-lint # from any directory travis-lint [path to your .travis.yml]
第四步:使用Git Push触发你的第一次构建
第五步:调整构建配置
第六步:深入学习
第七步:向我们求助
个人总结
来自:http://my.oschina.net/zjzhai/blog/224142