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

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

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

完成,啟動 Travis

額外配置(可選)
但如果你使用的是 Travis Pro(Travis 的付費版,一般免費的已經(jīng)夠用)和其他 CI 系統(tǒng),或者需要非 git 主分支的結(jié)果時,需要進行寫入環(huán)境變量告知系統(tǒng)。
Coveralls 提供三個必填項:
COVERALLS_SERVICE_NAME:CI 系統(tǒng)名,比如 travis-pro; COVERALLS_REPO_TOKEN:Coveralls 給每個項目的唯一標識,也是提交單測覆蓋率報告的依據(jù); COVERALLS_GIT_BRANCH:提交報告是哪個 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 上項目的設置里(這不是加密,如果要更加嚴格的加密,可以使用加密文件,詳情看Travis 文檔)。
進入項目對應的 Travis 主頁; 點擊右上角的“More options”里“Settings”; 在“Environment Variables”塊進行“ADD”操作。

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

評論
圖片
表情
