開源社區裏,開源項目通常會將一排花花綠綠的 badge(徽章)擺在 README 最顯眼的位置,它們通常能夠起到一些說明和證實的做用。
好比下面的這個項目(傳送門):node
別覺得他們只是圖片,正規的項目是隨項目更新而更新的,點擊不了或者點擊進入的不是對應項目的報告均可以算做僞造,請遠離這些項目。
上面提到的 badge 中前兩個能夠算是項目可靠性的證實,是比較有分量的 badge,接下來咱們將指引你們如何自動化添加這兩 badge。git
注意:本文以 Github 爲代碼倉庫,第三方賬號受權都以 Github 賬號進行,請確保自身網絡環境能正常訪問;不涉及項目自己的構建和測試。github
爲項目安裝 devDependencies(開發依賴):npm
Travis CI 提供的是持續集成服務(Continuous Integration,簡稱 CI)。它綁定 Github 上面的項目,只要有新的代碼,就會自動抓取。而後,提供一個運行環境(容器),執行測試,完成構建,還能自動部署到服務器。
本次的自動化就是依靠這個服務完成的,這裏只展現相關的配置,更多的用法請自行查看文檔。json
在項目根目錄下新建 .travis.yml 文件,輸入下面配置並保存。promise
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+$/
配置說明:緩存
待倉庫導入後,進入項目主頁,右上角就能看到 badge,點擊它會彈出一個選擇代碼類型的彈框,選擇須要的類型複製粘貼到 README 就好了(通常選擇 Markdown)。 bash
Coveralls 是一個展現單元測試覆蓋率報告的網站,它自己不會運行單測或生成報告,它只是提供用於提交標準單元測試覆蓋率報告的包(也就是上面準備階段安裝的coveralls),能夠配合測試套件使用。服務器
以 Jest 爲例,默認運行jest --coverage
後會在 coverage 目錄下生成標準的單測報告。但咱們不須要在本地跑,Travis 會幫咱們完成,只須要確保能夠目錄正確便可。
上面 .travis.yml 中咱們使用了「report-coverage」命令,這個是自定義的 scripts,在 package.json 裏的 scripts 塊中寫入該命令,網絡
"scripts": { "report-coverage": "cat ./coverage/lcov.info | coveralls", }
點擊 DETAILS 進入詳情頁,這時候你還未有報告,因此看到的是指引頁,咱們能夠先在底部找到獲取 badge 代碼的入口,選擇須要的類型複製粘貼到 README 就好了(通常選擇 Markdown)。
將 .travis.yml、package.json 和 README 提交,Travis 監聽到提交就會啓動運行。偶爾第一次未成功 ,能夠點擊 Travis 的項目詳情頁右側,點擊「Trigger build」手動開啓。
由於 Coveralls 自己就已經能與 Travis 無縫配合,默認狀況下它們會識別相同的倉庫,並更新。
但若是你使用的是 Travis Pro(Travis 的付費版,通常免費的已經夠用)和其餘 CI 系統,或者須要非 git 主分支的結果時,須要進行寫入環境變量告知系統。
Coveralls 提供三個必填項:
若是是全局的變量,能夠直接寫到 .travis.yml 文件的 env 塊。好比:
env: - DB=postgres - SH=bash - PACKAGE_VERSION="1.0.*"
若是是每一個命令獨立使用的變量,能夠直接寫到 .travis.yml 文件的 script 塊裏的命令裏。
script: - COVERALLS_GIT_BRANCH=test npm run test:prod && npm run build
固然同理寫到 package.json 文件的 script 也是能夠的。
不管寫到 .travis.yml 或 package.json 文件都須要提交的 git,這些內容都會公開(公共倉庫),但相似 COVERALLS_REPO_TOKEN 這類數據是不能公開的。
所以咱們能夠將他們寫到 Travis 上項目的設置裏(這不是加密,若是要更加嚴格的加密,可使用加密文件,詳情看Travis 文檔)。
教程到此已經完成,總體流程就是:經過 Travis 配置監聽 Github 上對應倉庫的提交,Travis 發現提交就拉取代碼,在 Travis 提供的容器裏完成構建和單元測試,完成後再自動提交單測覆蓋率報告到 Coveralls,最終結果反映到 README 的 badge 上。一勞永逸,還不趕忙試試。