1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        自動(dòng)化為你的項(xiàng)目添加證明可靠性的 badge

        共 3721字,需瀏覽 8分鐘

         ·

        2021-01-06 18:41

        作者:calimanco
        來(lái)源:SegmentFault 思否社區(qū)



        前言


        開源社區(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ō)明其最小化后包的大小;


        別以為他們只是圖片,正規(guī)的項(xiàng)目是隨項(xiàng)目更新而更新的,點(diǎn)擊不了或者點(diǎn)擊進(jìn)入的不是對(duì)應(yīng)項(xiàng)目的報(bào)告都可以算作偽造,請(qǐng)遠(yuǎn)離這些項(xiàng)目。

        上面提到的 badge 中前兩個(gè)可以算是項(xiàng)目可靠性的證明,是比較有份量的 badge,接下來(lái)我們將指引大家如何自動(dòng)化添加這兩 badge。

        注意:本文以 Github 為代碼倉(cāng)庫(kù),第三方帳號(hào)授權(quán)都以 Github 帳號(hào)進(jìn)行,請(qǐng)確保自身網(wǎng)絡(luò)環(huán)境能正常訪問(wèn);不涉及項(xiàng)目本身的構(gòu)建和測(cè)試。



        準(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 配置


        Travis CI 提供的是持續(xù)集成服務(wù)(Continuous Integration,簡(jiǎn)稱 CI)。它綁定 Github 上面的項(xiàng)目,只要有新的代碼,就會(huì)自動(dòng)抓取。然后,提供一個(gè)運(yùn)行環(huán)境(容器),執(zhí)行測(cè)試,完成構(gòu)建,還能自動(dòng)部署到服務(wù)器。

        本次的自動(dòng)化就是依靠這個(gè)服務(wù)完成的,這里只展示相關(guān)的配置,更多的用法請(qǐng)自行查看文檔。

        新建配置文件


        在項(xiàng)目根目錄下新建 .travis.yml 文件,輸入下面配置并保存。

        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+$/

        配置說(shuō)明:

        • 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)聽


        1. 進(jìn)入 Travis 官網(wǎng):https://travis-ci.com/;
        2. 用 Github 帳號(hào)授權(quán)登錄;
        3. 點(diǎn)擊左上角的加號(hào),或者點(diǎn)擊指引里的按鈕,進(jìn)入對(duì) Github 倉(cāng)庫(kù)進(jìn)行授權(quán);


        4. 可以選擇授權(quán)當(dāng)前 Github 帳號(hào)的部分倉(cāng)庫(kù),也可以選擇全部。


        獲取構(gòu)建 badge 代碼


        待倉(cāng)庫(kù)導(dǎo)入后,進(jìn)入項(xiàng)目主頁(yè),右上角就能看到 badge,點(diǎn)擊它會(huì)彈出一個(gè)選擇代碼類型的彈框,選擇需要的類型復(fù)制粘貼到 README 就行了(一般選擇 Markdown)。




        Coveralls 配置


        Coveralls 是一個(gè)展示單元測(cè)試覆蓋率報(bào)告的網(wǎng)站,它本身不會(huì)運(yùn)行單測(cè)或生成報(bào)告,它只是提供用于提交標(biāo)準(zhǔn)單元測(cè)試覆蓋率報(bào)告的包(也就是上面準(zhǔn)備階段安裝的coveralls),可以配合測(cè)試套件使用。

        編寫提交命令


        以 Jest 為例,默認(rèn)運(yùn)行jest --coverage后會(huì)在 coverage 目錄下生成標(biāo)準(zhǔn)的單測(cè)報(bào)告。但我們不需要在本地跑,Travis 會(huì)幫我們完成,只需要確??梢阅夸浾_即可。

        上面 .travis.yml 中我們使用了“report-coverage”命令,這個(gè)是自定義的 scripts,在 package.json 里的 scripts 塊中寫入該命令,

        "scripts":?{
        ??"report-coverage":?"cat?./coverage/lcov.info?|?coveralls",
        }

        開啟 Coveralls 監(jiān)聽


        1. 進(jìn)入 Coveralls 官網(wǎng):https://coveralls.io/;
        2. 用 Github 帳號(hào)授權(quán)登錄;
        3. 點(diǎn)擊右側(cè)加號(hào)(ADD REPO);
        4. 把需要的項(xiàng)目的開關(guān)打開;


        獲取覆蓋率 badge 代碼


        點(diǎn)擊 DETAILS 進(jìn)入詳情頁(yè),這時(shí)候你還未有報(bào)告,所以看到的是指引頁(yè),我們可以先在底部找到獲取 badge 代碼的入口,選擇需要的類型復(fù)制粘貼到 README 就行了(一般選擇 Markdown)。




        完成,啟動(dòng) Travis


        將 .travis.yml、package.json 和 README 提交,Travis 監(jiān)聽到提交就會(huì)啟動(dòng)運(yùn)行。偶爾第一次未成功 ,可以點(diǎn)擊 Travis 的項(xiàng)目詳情頁(yè)右側(cè),點(diǎn)擊“Trigger build”手動(dòng)開啟。




        額外配置(可選)


        因?yàn)?Coveralls 本身就已經(jīng)能與 Travis 無(wú)縫配合,默認(rèn)情況下它們會(huì)識(shí)別相同的倉(cāng)庫(kù),并更新。

        但如果你使用的是 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)境變量


        如果是全局的變量,可以直接寫到 .travis.yml 文件的 env 塊。比如:

        env:
        ??-?DB=postgres
        ??-?SH=bash
        ??-?PACKAGE_VERSION="1.0.*"

        局部的環(huán)境變量


        如果是每個(gè)命令獨(dú)立使用的變量,可以直接寫到 .travis.yml 文件的 script 塊里的命令里。

        script:
        ??-?COVERALLS_GIT_BRANCH=test?npm?run?test:prod?&&?npm?run?build

        當(dāng)然同理寫到 package.json 文件的 script 也是可以的。

        一些不能公開的變量


        無(wú)論寫到 .travis.yml 或 package.json 文件都需要提交的 git,這些內(nèi)容都會(huì)公開(公共倉(cāng)庫(kù)),但類似 COVERALLS_REPO_TOKEN 這類數(shù)據(jù)是不能公開的。

        因此我們可以將他們寫到 Travis 上項(xiàng)目的設(shè)置里(這不是加密,如果要更加嚴(yán)格的加密,可以使用加密文件,詳情看Travis 文檔)。
        https://docs.travis-ci.com/user/encrypting-files/

        1. 進(jìn)入項(xiàng)目對(duì)應(yīng)的 Travis 主頁(yè);
        2. 點(diǎn)擊右上角的“More options”里“Settings”;
        3. 在“Environment Variables”塊進(jìn)行“ADD”操作。




        結(jié)束


        教程到此已經(jīng)完成,整體流程就是:通過(guò) Travis 配置監(jiān)聽 Github 上對(duì)應(yīng)倉(cāng)庫(kù)的提交,Travis 發(fā)現(xiàn)提交就拉取代碼,在 Travis 提供的容器里完成構(gòu)建和單元測(cè)試,完成后再自動(dòng)提交單測(cè)覆蓋率報(bào)告到 Coveralls,最終結(jié)果反映到 README 的 badge 上。

        一勞永逸,還不趕緊試試。



        點(diǎn)擊左下角閱讀原文,到?SegmentFault 思否社區(qū)?和文章作者展開更多互動(dòng)和交流。

        -?END -

        瀏覽 31
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            自拍偷拍精品视频 | 男女做爰猛烈叫床高潮的书 | 免费看男男gay啪啪的软件 | 日本色导航 | 99久热 | 天天日人人| 蜜桃av秘 无码一区二区三欧 | 久热中文影视欧美 | 欧美在线黄片 | 绿巨人破解|