自動(dòng)化為你的項(xiàng)目添加證明可靠性的 badge
前言
開源社區(qū)里,開源項(xiàng)目一般會(huì)將一排花花綠綠的 badge(徽章)擺在 README 最顯眼的位置,它們一般可以起到一些說(shuō)明和證明的作用。
比如下面的這個(gè)項(xiàng)目:
https://github.com/calimanco/promise-polyfill-plus
第一個(gè) badge 證明其能正常構(gòu)建,點(diǎn)擊跳轉(zhuǎn)至構(gòu)建過(guò)程報(bào)告; 第二個(gè) badge 證明其測(cè)試覆蓋率達(dá)到100%,點(diǎn)擊跳轉(zhuǎn)至單元測(cè)試報(bào)告; 第三個(gè) badge 說(shuō)明其是 MIT 授權(quán)協(xié)議; 第四個(gè) badge 說(shuō)明其最小化后包的大小;

上面提到的 badge 中前兩個(gè)可以算是項(xiàng)目可靠性的證明,是比較有份量的 badge,接下來(lái)我們將指引大家如何自動(dòng)化添加這兩 badge。
準(zhǔn)備
編寫一個(gè)項(xiàng)目,在 package.json 中以“build”為構(gòu)建命令,dist 為打包后輸出的目錄; 編寫好該項(xiàng)目的單元測(cè)試,在 package.json 中以“test:prod”為測(cè)試命令,并且會(huì)自動(dòng)在 coverage 目錄下生成覆蓋率報(bào)告; 為項(xiàng)目安裝 devDependencies(開發(fā)依賴): coveralls 注冊(cè)一個(gè) Github 帳號(hào),提交項(xiàng)目到一個(gè)倉(cāng)庫(kù)。
Travis 配置
本次的自動(dòng)化就是依靠這個(gè)服務(wù)完成的,這里只展示相關(guān)的配置,更多的用法請(qǐng)自行查看文檔。
新建配置文件
language:?node_js
cache:?npm
notifications:
??email:?false
node_js:
??-?'10'
script:
??-?npm?run?test:prod?&&?npm?run?build
after_success:
??-?npm?run?report-coverage
branches:
??except:
????-?/^v\d+\.\d+\.\d+$/
language:Travis 可以支持多種語(yǔ)言,這里是 node 項(xiàng)目,填“node_js”即可; cache:緩存,可加快構(gòu)建。配置為 npm 會(huì)緩存 $HOME/.npm 和 node_modules 目錄; notifications:默認(rèn)情況下會(huì)郵件通知提交者和作者,如果不需要?jiǎng)t設(shè)置為 false,還支持設(shè)置鉤子、接口通知等方式,詳細(xì)見文檔; https://docs.travis-ci.com/user/notifications#configuring-email-notifications node_js:運(yùn)行容器安裝的 node 版本,這里是指構(gòu)建和測(cè)試的環(huán)境,與實(shí)際運(yùn)行環(huán)境是不同的,一般與本機(jī)相同即可,設(shè)置多個(gè)的話每次每一個(gè)都會(huì)運(yùn)行一次,會(huì)增加構(gòu)建時(shí)間; script:要運(yùn)行的命令,這里我們進(jìn)行的就是單元測(cè)試和構(gòu)建兩步操作; after_success:script 運(yùn)行結(jié)束,且無(wú)錯(cuò)誤的情況下運(yùn)行的命令,這里我們進(jìn)行單測(cè)覆蓋率報(bào)告提交; branches:需要運(yùn)行的 git 分支,默認(rèn)是只運(yùn)行主分支,這里我們?cè)黾恿藢?duì)“vXX.XX.XX”分支的支持。
開啟 Travis 監(jiān)聽
進(jìn)入 Travis 官網(wǎng):https://travis-ci.com/; 用 Github 帳號(hào)授權(quán)登錄; 點(diǎn)擊左上角的加號(hào),或者點(diǎn)擊指引里的按鈕,進(jìn)入對(duì) Github 倉(cāng)庫(kù)進(jìn)行授權(quán); 
可以選擇授權(quán)當(dāng)前 Github 帳號(hào)的部分倉(cāng)庫(kù),也可以選擇全部。 
獲取構(gòu)建 badge 代碼

Coveralls 配置
編寫提交命令
上面 .travis.yml 中我們使用了“report-coverage”命令,這個(gè)是自定義的 scripts,在 package.json 里的 scripts 塊中寫入該命令,
"scripts":?{
??"report-coverage":?"cat?./coverage/lcov.info?|?coveralls",
}
開啟 Coveralls 監(jiān)聽
進(jìn)入 Coveralls 官網(wǎng):https://coveralls.io/; 用 Github 帳號(hào)授權(quán)登錄; 點(diǎn)擊右側(cè)加號(hào)(ADD REPO); 把需要的項(xiàng)目的開關(guān)打開; 
獲取覆蓋率 badge 代碼

完成,啟動(dòng) Travis

額外配置(可選)
但如果你使用的是 Travis Pro(Travis 的付費(fèi)版,一般免費(fèi)的已經(jīng)夠用)和其他 CI 系統(tǒng),或者需要非 git 主分支的結(jié)果時(shí),需要進(jìn)行寫入環(huán)境變量告知系統(tǒng)。
Coveralls 提供三個(gè)必填項(xiàng):
COVERALLS_SERVICE_NAME:CI 系統(tǒng)名,比如 travis-pro; COVERALLS_REPO_TOKEN:Coveralls 給每個(gè)項(xiàng)目的唯一標(biāo)識(shí),也是提交單測(cè)覆蓋率報(bào)告的依據(jù); COVERALLS_GIT_BRANCH:提交報(bào)告是哪個(gè) git 分支。
全局的環(huán)境變量
env:
??-?DB=postgres
??-?SH=bash
??-?PACKAGE_VERSION="1.0.*"
局部的環(huán)境變量
script:
??-?COVERALLS_GIT_BRANCH=test?npm?run?test:prod?&&?npm?run?build
一些不能公開的變量
因此我們可以將他們寫到 Travis 上項(xiàng)目的設(shè)置里(這不是加密,如果要更加嚴(yán)格的加密,可以使用加密文件,詳情看Travis 文檔)。
進(jìn)入項(xiàng)目對(duì)應(yīng)的 Travis 主頁(yè); 點(diǎn)擊右上角的“More options”里“Settings”; 在“Environment Variables”塊進(jìn)行“ADD”操作。

結(jié)束
一勞永逸,還不趕緊試試。

評(píng)論
圖片
表情
