如何使用Travis CI對(duì)Github項(xiàng)目進(jìn)行持續(xù)集成來提升項(xiàng)目開發(fā)的效率
作為目前世界上規(guī)模最大的開源社區(qū),GitHub平臺(tái)上擁有2700萬開發(fā)者,托管超過2530萬活躍項(xiàng)目。GitHub開發(fā)者們面對(duì)規(guī)?;_發(fā)項(xiàng)目都是如何管理的呢?如何能在最短的時(shí)間內(nèi)發(fā)現(xiàn)開發(fā)問題?有沒有免費(fèi)工具能夠幫助我們快速提高代碼質(zhì)量?
為了幫助更多 Qtum 社區(qū)開發(fā)者能夠更好地使用開源網(wǎng)站,方便對(duì)Qtum等開源項(xiàng)目進(jìn)行開發(fā)管理,本文將介紹如何使用 Travis CI 對(duì) Github上的項(xiàng)目進(jìn)行持續(xù)集成,從而提升項(xiàng)目開發(fā)的效率與自動(dòng)化。
所謂持續(xù)集成(Continuous IntegraTIon),即為系統(tǒng)不斷地根據(jù)代碼庫中的最新代碼構(gòu)建項(xiàng)目,并進(jìn)行自動(dòng)化測試,幫助開發(fā)者及時(shí)發(fā)現(xiàn)開發(fā)過程的問題,保證開發(fā)質(zhì)量,降低后期修復(fù)成本。
目前大多數(shù)技術(shù)團(tuán)隊(duì)對(duì)項(xiàng)目進(jìn)行持續(xù)集成的重要性已經(jīng)取得共識(shí),但真正實(shí)踐的卻還是少數(shù)。另一種情況中,當(dāng)項(xiàng)目開發(fā)人員較少時(shí),若實(shí)施CI工具,將顯著提升代碼質(zhì)量。下面將介紹如何為GitHub上托管的開源項(xiàng)目用Travis CI進(jìn)行持續(xù)集成從而提升開發(fā)效率與自動(dòng)化。
Travis CI 介紹
Travis CI 是一個(gè)開源的,分布式的持續(xù)集成服務(wù),用來構(gòu)建及測試在 GitHub 托管的代碼。
它提供了對(duì)多種編程語言的支持,包括 Ruby、JavaScript、Java、Scala、PHP、Haskell 和 Erlang 在內(nèi)的多種語言。許多知名的開源項(xiàng)目使用它來在每次提交的時(shí)候進(jìn)行構(gòu)建測試,比如 Ruby on Rails,Ruby 和 Node.js。
開始使用 Travis CI
首先,使用 GitHub 帳號(hào)登錄 https://travis-ci.org,然后你可以在首頁看到你的已開啟 Travis CI 服務(wù)的項(xiàng)目列表。你可以在 SetTIngs 中添加或刪除使用 Travis CI 的項(xiàng)目。
配置 Travis CI
你需要在項(xiàng)目的根目錄下添加一個(gè)名叫.travis.yml的配置文件,它描述了 Travis CI 每次構(gòu)建的時(shí)候需要做的具體任務(wù)。一個(gè)最基本的.travis.yml內(nèi)容大概像這個(gè)樣子:
language: ruby
rvm:
- 2.2
- jruby
它指出了這個(gè)項(xiàng)目需要使用Ruby 2.2以及最新版本的JRuby來構(gòu)建。你需要把這個(gè)配置文件提交到你的倉庫里面去,以觸發(fā) Travis CI 執(zhí)行一次構(gòu)建。
默認(rèn)情況下,每一次 Push 到 GitHub 倉庫,或者每一次的 Pull Request 都會(huì)觸發(fā)一次構(gòu)建。
觸發(fā)構(gòu)建后,你可以在 Travis CI 的網(wǎng)站 上看到相應(yīng)的構(gòu)建情況和構(gòu)建歷史。
Travis CI 構(gòu)建的生命周期
一次構(gòu)建任務(wù)主要由兩部分組成:
install: 安裝一些必要的依賴
script: 執(zhí)行構(gòu)建腳本
你也可以在安裝依賴之前(before_install),執(zhí)行構(gòu)建腳本之前(before_script)或之后(after_script)執(zhí)行一些自定義命令。你也可以在構(gòu)建成功或失敗后執(zhí)行相應(yīng)的自定義命令。
完整的生命周期如下:
(可選的) 安裝 apt addons
(可選的) 安裝 cache components
before_install
install
before_script
script
(可選的) before_cache (用于清除緩存)
after_success 或者 after_failure
(可選的) before_deploy
(可選的) deploy
(可選的) after_deploy
`after_script```
配置樣例
上例節(jié)選自比特幣的.travis.yml配置文件。其中描述內(nèi)容大致如下:
使用xeniel(Ubuntu 16.04) 進(jìn)行本次構(gòu)建
使用ccache對(duì)部分構(gòu)建內(nèi)容進(jìn)行緩存
定義了兩個(gè)構(gòu)建階段: lint和test
定義了一些環(huán)境變量(env)
指定了安裝前的操作(before_install)
指定了安裝操作(install)
指定了構(gòu)建前的操作(before_script)
指定了構(gòu)建操作(script)
指定了構(gòu)建完成后的操作(after_script)
指定了構(gòu)建需要執(zhí)行的任務(wù)列表(jobs)