Node.js-持續(xù)集成平臺:travis

2018-09-28 22:48 更新

持續(xù)集成平臺:travis

目標(biāo)

無明確目標(biāo)

知識點

  1. 學(xué)習(xí)使用 travis-ci 對項目進行持續(xù)集成測試 (https://travis-ci.org/ )

課程內(nèi)容

首先來看看這個項目:https://github.com/Ricardo-Li/node-practice-3

(圖1)

類似這樣的 badges,在很多項目中都可以看到。前者是告訴我們,這個項目的測試目前是通過的;后者是告訴我們,這個測試的行覆蓋率是多少。行覆蓋率當(dāng)然是越多越好。測試的重要性我就不說了。

為什么要使用 travis 這樣的平臺,是因為它可以讓你明白自己的項目在一個“空白環(huán)境”中,是否能正確運行;也可以讓你知道,用不同的 Node.js 版本運行的話,有沒有兼容性問題。

當(dāng)你在自己的機器上跑測試的時候,你用著特定的 Node.js 版本,比如 0.10,如果測試過了,你也還是不懂在 0.11 下,你的測試能不能通過。你可以手動地切換 node 版本再跑一次,也可以選擇讓 travis 幫你把不同的 node 版本跑一次。而且有時候,我們 npm 安裝了某個包,但卻忘記將它寫入 package.json 里面了,在自己的機器上,測試沒問題,但當(dāng)別的用戶安裝你的包時,會發(fā)現(xiàn)有依賴缺失。

travis 應(yīng)該是把虛擬機的技術(shù)玩得比較好,它每次跑測試時,都會提供一個空白的環(huán)境。這個環(huán)境只有 Linux 基本的 build-essentialwget、git 那些依賴。連 Node.js 的運行時都是現(xiàn)跑現(xiàn)安裝的。

travis 默認帶有的那些依賴,都是每個用戶的機器上都會有的,所以一旦你的應(yīng)用在 travis 上面能夠跑通,那么就不用擔(dān)心別的用戶安裝不上了。

我們來講講接入 travis 的步驟。

travis 的價格是免費的,對于 github 上的開源項目來說。它默認當(dāng)然不可能幫 github 的每個用戶都跑測試,所以你需要去注冊一下 travis,然后告訴它你需要開啟集成測試的倉庫。

比如上圖,可以看到我?guī)妥约旱?alsohosts 項目以及 adsf 項目開啟了測試。

當(dāng)你在 travis 授權(quán)了倉庫之后,每當(dāng)你 push 代碼到 github,travis 都會自動幫你跑測試。

travis 通過授權(quán),可以知道你的項目在什么地方,于是它就可以把項目 clone 過去。但問題又來了,它不懂你的測試怎么跑啊。用 npm test 還是 make test 還是 jake test 呢?

所以我們需要給出一些配置信息,配置信息以 .travis.yml 文件的形式放在項目根目錄,比如一個簡單的 .travis.yml。

language: node_js
node_js:
 - '0.8'
 - '0.10'
 - '0.11'

script: make test

這個文件傳遞的信息是:

  • 這是一個 node.js 應(yīng)用
  • 這個測試需要用 0.8、0.10 以及 0.11 三個版本來跑
  • 跑測試的命令是 make test

將這個文件添加到項目的根目錄下,再 push 上 github,這時候 travis 就會被觸發(fā)了。

travis 接著會做的事情是:

  1. 安裝一個 node.js 運行時。由于我們指定了三個不同版本,于是 travis 會使用三個機器,分別安裝三個版本的 node.js
  2. 這些機器在完成運行時安裝后,會進入項目目錄執(zhí)行 npm install 來安裝依賴。
  3. 當(dāng)依賴安裝完成后,執(zhí)行我們指定的 script,在這里也就是 make test

如果測試通過的話,make 命令的返回碼會是 0(如果不懂什么是返回碼,則需要補補 shell 的知識),則測試通過;如果測試有不通過的 case,則返回碼不會為 0,travis 則判斷測試失敗。

每一個 travis 上面的項目,都可以得到一個圖片地址,這個地址上的圖片會顯示你項目當(dāng)前的測試通過狀態(tài),把這個圖片添加到自己項目的 README 中,就可以得到我們圖1的那種逼格了。

對了,行覆蓋率的那個 badge 是由一個叫 coveralls(https://coveralls.io/ ) 的服務(wù)提供的。大家可以試著自己接入。

補充說明:

如果你的應(yīng)用有使用到數(shù)據(jù)庫, 需要在 .travis.yml 中添加一些內(nèi)容.

以 MongoDB 為例:

services:
    mongodb

其它數(shù)據(jù)庫詳細內(nèi)容參考travis 官方文檔

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號