Node.js 13:《持續(xù)集成平臺:travis》

2018-08-07 15:23 更新

目標

無明確目標

知識點

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

課程內(nèi)容

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

(圖1)

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

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

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

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

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

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

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

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

當你在 travis 授權(quán)了倉庫之后,每當你 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 應用
  • 這個測試需要用 0.8、0.10 以及 0.11 三個版本來跑
  • 跑測試的命令是 make test

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

travis 接著會做的事情是:

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

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

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

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

補充說明:

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

以 MongoDB 為例:

services:
    mongodb

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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號