無明確目標(biāo)
首先來看看這個(gè)項(xiàng)目:https://github.com/Ricardo-Li/node-practice-3
(圖1)
類似這樣的 badges,在很多項(xiàng)目中都可以看到。前者是告訴我們,這個(gè)項(xiàng)目的測(cè)試目前是通過的;后者是告訴我們,這個(gè)測(cè)試的行覆蓋率是多少。行覆蓋率當(dāng)然是越多越好。測(cè)試的重要性我就不說了。
為什么要使用 travis 這樣的平臺(tái),是因?yàn)樗梢宰屇忝靼鬃约旱捻?xiàng)目在一個(gè)“空白環(huán)境”中,是否能正確運(yùn)行;也可以讓你知道,用不同的 Node.js 版本運(yùn)行的話,有沒有兼容性問題。
當(dāng)你在自己的機(jī)器上跑測(cè)試的時(shí)候,你用著特定的 Node.js 版本,比如 0.10,如果測(cè)試過了,你也還是不懂在 0.11 下,你的測(cè)試能不能通過。你可以手動(dòng)地切換 node 版本再跑一次,也可以選擇讓 travis 幫你把不同的 node 版本跑一次。而且有時(shí)候,我們 npm 安裝了某個(gè)包,但卻忘記將它寫入 package.json 里面了,在自己的機(jī)器上,測(cè)試沒問題,但當(dāng)別的用戶安裝你的包時(shí),會(huì)發(fā)現(xiàn)有依賴缺失。
travis 應(yīng)該是把虛擬機(jī)的技術(shù)玩得比較好,它每次跑測(cè)試時(shí),都會(huì)提供一個(gè)空白的環(huán)境。這個(gè)環(huán)境只有 Linux 基本的 build-essential
和 wget
、git
那些依賴。連 Node.js 的運(yùn)行時(shí)都是現(xiàn)跑現(xiàn)安裝的。
travis 默認(rèn)帶有的那些依賴,都是每個(gè)用戶的機(jī)器上都會(huì)有的,所以一旦你的應(yīng)用在 travis 上面能夠跑通,那么就不用擔(dān)心別的用戶安裝不上了。
我們來講講接入 travis 的步驟。
travis 的價(jià)格是免費(fèi)的,對(duì)于 github 上的開源項(xiàng)目來說。它默認(rèn)當(dāng)然不可能幫 github 的每個(gè)用戶都跑測(cè)試,所以你需要去注冊(cè)一下 travis,然后告訴它你需要開啟集成測(cè)試的倉庫。
比如上圖,可以看到我?guī)妥约旱?alsohosts
項(xiàng)目以及 adsf
項(xiàng)目開啟了測(cè)試。
當(dāng)你在 travis 授權(quán)了倉庫之后,每當(dāng)你 push 代碼到 github,travis 都會(huì)自動(dòng)幫你跑測(cè)試。
travis 通過授權(quán),可以知道你的項(xiàng)目在什么地方,于是它就可以把項(xiàng)目 clone 過去。但問題又來了,它不懂你的測(cè)試怎么跑啊。用 npm test
還是 make test
還是 jake test
呢?
所以我們需要給出一些配置信息,配置信息以 .travis.yml
文件的形式放在項(xiàng)目根目錄,比如一個(gè)簡(jiǎn)單的 .travis.yml
。
language: node_js
node_js:
- '0.8'
- '0.10'
- '0.11'
script: make test
這個(gè)文件傳遞的信息是:
make test
將這個(gè)文件添加到項(xiàng)目的根目錄下,再 push 上 github,這時(shí)候 travis 就會(huì)被觸發(fā)了。
travis 接著會(huì)做的事情是:
npm install
來安裝依賴。make test
如果測(cè)試通過的話,make 命令的返回碼會(huì)是 0(如果不懂什么是返回碼,則需要補(bǔ)補(bǔ) shell 的知識(shí)),則測(cè)試通過;如果測(cè)試有不通過的 case,則返回碼不會(huì)為 0,travis 則判斷測(cè)試失敗。
每一個(gè) travis 上面的項(xiàng)目,都可以得到一個(gè)圖片地址,這個(gè)地址上的圖片會(huì)顯示你項(xiàng)目當(dāng)前的測(cè)試通過狀態(tài),把這個(gè)圖片添加到自己項(xiàng)目的 README 中,就可以得到我們圖1的那種逼格了。
對(duì)了,行覆蓋率的那個(gè) badge 是由一個(gè)叫 coveralls(https://coveralls.io/ ) 的服務(wù)提供的。大家可以試著自己接入。
如果你的應(yīng)用有使用到數(shù)據(jù)庫, 需要在 .travis.yml
中添加一些內(nèi)容.
以 MongoDB 為例:
services:
mongodb
其它數(shù)據(jù)庫詳細(xì)內(nèi)容參考travis 官方文檔
更多建議: