持續集成服務託管Travis CI入門

Travis CI 介紹

Travis CI是一個持續集成的託管服務。目前已經集成Github,並支持如下類型的項目:javascript

Travis CI構建環境爲不一樣的語言提供多種不一樣的運行時,如多版本的Ruby,PHP,Node.js。同時,它還提供多種數據庫和經常使用工具,如消息中間件。php

你能夠很輕鬆在一種或多種語言甚至多種數據庫環境下測試你的項目。java

第一步:登陸:

首先使用你的Github賬戶登陸Travis CI。訪問Travis CI並點擊頁面頂部的Sign In鏈接。node

注意,在http://travis-ci.org,你只能看到你的公開倉庫,而在http://travis-ci.com,你能夠看你的私有倉庫。python

登陸的時候,GitHub會詢問是否容許咱們訪問你的GitHub權限。在這裏有更詳細的關於Github權限的描述。git

第二步:激活GitHub的web鉤子(Webhook)

登陸後,咱們將會從GitHub同步你的倉庫,包括你的開源項目或私有項目。github

你能夠看到你全部的可訪問的機構,倉庫。只要你是倉庫的管理員,你均可以開啓服務鉤子(service hook)。web

接着,開啓它們。https://travis-ci.org/profileobjective-c

譯註:開啓路徑: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這樣的工具,難度也很是的大。你首先須要改變人們觀點,讓他們以爲構建工具能夠解決不少問題的,而後再推構建工具,最後纔到持續集成。

可是,說回來,和夏蟲語冰,你會很痛苦!

相關文章
相關標籤/搜索