持續集成服務托管Travis CI入門
摘要 </span>持續集成也可以作為服務被托管。這篇文章是對官方的入門文檔的翻譯:http://docs.travis-ci.com/user/getting-started/
Travis CI 介紹
Travis CI是一個持續集成的托管服務。目前已經集成Github,并支持以下類型的項目:
- C
- C++
- Clojure
- Erlang
- Go
- Groovy
- Haskell
- Java
- JavaScript (with Node.js)
- Objective-C
- Perl
- PHP
- Python
- Ruby
- Scala
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的web鉤子(Webhook)
登錄后,我們將會從GitHub同步你的倉庫,包括你的開源項目或私有項目。
你可以看到你所有的可訪問的機構,倉庫。只要你是倉庫的管理員,你都可以開啟服務鉤子(service hook)。
接著,開啟它們。https://travis-ci.org/profile
譯注:開啟路徑:https://travis-ci.org/profile
第三步:添加.travis.yml文件到你的倉庫
為了讓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
language: c compiler: - gcc - clang # Change this to your needs script: ./configure && make
更多C語言的.travis.yml選項
C++
language: cpp compiler: - gcc - clang # Change this to your needs script: ./configure && make
更多C++語言的.travis.yml選項
Clojure
使用Leiningen 1的:
language: clojure jdk: - oraclejdk7 - openjdk7 - openjdk6
使用Leiningen 2的:
language: clojure lein: lein2 jdk: - openjdk7 - openjdk6
更多clojure語言的.travis.yml選項
Erlang
language: erlang otp_release: - R15B02 - R15B01 - R14B04 - R14B03
更多Erlang語言的.travis.yml選項
Haskell
language: haskell
更多Haskell語言的.travis.yml選項
Go
language: go
更多Go語言的.travis.yml選項
Groovy
language: groovy jdk: - oraclejdk7 - openjdk7 - openjdk6
更多Groovy 語言的.travis.yml選項
Java
language: java jdk: - oraclejdk7 - openjdk7 - openjdk6
更多Java語言的.travis.yml選項
Node.js
language: node_js node_js: - "0.10" - "0.8" - "0.6"
更多Node.js語言的.travis.yml選項
Objective-C
language: objective-c
更多Objective-C語言的.travis.yml選項
Perl
language: perl perl: - "5.16" - "5.14" - "5.12"
更多Perl語言的.travis.yml選項
PHP
language: php php: - "5.5" - "5.4" - "5.3"
更多PHP語言的.travis.yml選項
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
更多Python語言的.travis.yml選項
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
更多Ruby語言的.travis.yml選項
Scala
language: scala scala: - "2.9.2" - "2.8.2" jdk: - oraclejdk7 - openjdk7 - openjdk6
更多Scala語言的.travis.yml選項
校驗.travis.yml
建議你使用travis-lint(命令行工具)或者.travis.yml validation Web app去校驗你的.travis.yml文件。
travis-lint需要你已經安裝Ruby 1.8.7+和RubyGems。通過以下命令安裝:
gem install travis-lint
校驗.travis.yml:
# inside a repository with .travis.yml travis-lint # from any directory travis-lint [path to your .travis.yml]
travis-lint會檢查以下內容:
- 是否為有效的YAML文件
- 是否已經設置language
- 所定義的運行時環境(Ruby,PHP,OTP等)是否為Travis CI所支持的。
- 確保你沒有使用過時的特性及運行時別名
等等,travis-lint是你的好朋友。
第四步:使用Git Push觸發你的第一次構建
只要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這樣的工具,難度也非常的大。你首先需要改變人們觀點,讓他們覺得構建工具可以解決很多問題的,然后再推構建工具,最后才到持續集成。
來自:http://my.oschina.net/zjzhai/blog/224142