成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

novo / 1539人閱讀

前言

已經(jīng)有阮一峰老師的持續(xù)集成服務(wù) Travis CI 教程,為什么還要寫這篇文章?

原因有二:

文章內(nèi)容有些過(guò)時(shí)

文章覆蓋度不夠,有些實(shí)踐細(xì)節(jié)沒(méi)寫出來(lái)

由于以上原因,縱然可以筆者很快在Github集成Travis?CI并成功構(gòu)建,但在發(fā)布時(shí)卻踩了一些坑,折騰一波才終于發(fā)布成功。故寫下此文,旨在補(bǔ)充更多的細(xì)節(jié),幫助他人少走彎路。

正文

免費(fèi)購(gòu)買Travis?CI應(yīng)用

點(diǎn)擊?https://github.com/marketplace/travis-ci,登錄后免費(fèi)購(gòu)買(開(kāi)源項(xiàng)目集成Travis?CI不收費(fèi))。

選擇關(guān)聯(lián)倉(cāng)庫(kù)

選擇個(gè)人或組織名下需要關(guān)聯(lián)Travis?CI的Github倉(cāng)庫(kù)。

已經(jīng)設(shè)置過(guò)的,想進(jìn)行修改,可以在Github的 Personal?settings-> Applications 中進(jìn)入。

編寫CI文件

在項(xiàng)目根目錄下新建?.travis.yml?文件

touch .travis.yml

發(fā)布到github pages

下面展示一個(gè)可以發(fā)布到gh-pages的例子,可以稍做修改,復(fù)制粘貼使用。

該示例包含了:

指定node.js版本

使用yarn進(jìn)行安裝依賴及構(gòu)建

對(duì)安裝需要的依賴進(jìn)行了緩存

設(shè)置了兩個(gè)不含敏感信息的環(huán)境變量

設(shè)置了一個(gè)含有敏感信息的環(huán)境變量

把構(gòu)建生成的文件部署至github pages

language: node_js
node_js:
- lts/*
env:
- API_SERVER=https://easy-mock.com/mock/5c1b3895fe5907404e654045/femessage-mock PUBLIC_PATH=http://levy.work/nuxt-element-dashboard/
# 默認(rèn)是yarn, 如果有yarn.lock的話
install:
- yarn
# 默認(rèn)是 yarn test
script:
- yarn build
cache: yarn
deploy:
  provider: pages
  skip-cleanup: true
  keep-history: true
  local-dir: dist
  on:
    branch: master
  github-token: $GITHUB_TOKEN

下面對(duì)文件進(jìn)行說(shuō)明。

language: node_js
node_js:
- lts/*

第1行指定了構(gòu)建環(huán)境為node.js

第2、3行指定使用node.js最新的LTS版本

env:
- API_SERVER=xxx PUBLIC_PATH=xxx

上面是設(shè)置兩個(gè)環(huán)境變量。

注意,一次構(gòu)建中傳多個(gè)環(huán)境變量,必須寫在同一行,使用空格分開(kāi)。

env:
- API_SERVER=xxx 
- PUBLIC_PATH=xxx

如果寫成上面的形式,則會(huì)變成兩個(gè)構(gòu)建,每一個(gè)構(gòu)建中只有一個(gè)環(huán)境變量。

install:
- yarn
script:
- yarn build
cache: yarn

上面指定使用yarn進(jìn)行安裝依賴,安裝好后執(zhí)行 yarn build?命令;?為yarn的依賴加速安裝,開(kāi)啟了緩存。

下面是最關(guān)鍵的部署配置。

deploy:
  provider: pages
  github-token: $GITHUB_TOKEN
  skip-cleanup: true
  keep-history: true
  local-dir: dist
  on:
    branch: master

第2行指定部署到Github Pages,即倉(cāng)庫(kù)的 gh-pages?分支,請(qǐng)確保倉(cāng)庫(kù)的pages分支是 gh-pages?,?相關(guān)操作可以看這里

第3行指定保留構(gòu)建后的文件

第4行指定每次部署會(huì)新增一個(gè)提交記錄再推送,而不是使用 git push --force

第5行指定構(gòu)建后要部署的目錄

第6、7行指定 master?分支有提交行為時(shí),將觸發(fā)構(gòu)建后部署

第8行是部署需要用到的github-token,其中$GITHUB_TOKEN是變量,它可以在Travis CI個(gè)人倉(cāng)庫(kù)的setting頁(yè)里設(shè)置,相關(guān)操作可以看這里

發(fā)布到npm

再給出把node.js模塊發(fā)布到npm的例子

主要是 deploy?這里有所不同

deploy:
  provider: npm
  email: 
  # api_key: travis encrypt NPM_TOKEN --add deploy.api_key --com
  on:
    branch: master
  skip-cleanup: true

api_key指的的npm的token,可以登錄npm后,在個(gè)人中心生成

因?yàn)椴荒苄孤?,所以要通過(guò)travis ci的命令行工具進(jìn)行加密,執(zhí)行以下命令

travis encrypt NPM_TOKEN --add deploy.api_key --com
復(fù)雜例子

下面是一個(gè)復(fù)雜的例子,也是實(shí)際用到的配置,主要是

master分支才會(huì)觸發(fā)構(gòu)建

執(zhí)行script命令前先讀取shell中的環(huán)境變量,并生成.env文件

構(gòu)建成功后

把模塊發(fā)布到npm

把文檔發(fā)布到gh-pages

branches:
  only:
    - master
language: node_js
node_js:
- lts/*
git:
  depth: 3
install:
- yarn --frozen-lockfile
before_script: echo OSS_KEY=$OSS_KEY
OSS_SECRET=$OSS_SECRET
OSS_BUCKET=$=OSS_BUCKET
OSS_REGION=$OSS_REGION > .env
script:
- yarn build
cache: yarn
deploy:
- provider: pages
  local-dir: docs
  github-token: $GITHUB_TOKEN
  skip-cleanup: true
  keep-history: true
- provider: npm
  email: [email protected]
  api_key: $NPM_TOKEN
  skip-cleanup: true
相關(guān)操作

使用travis命令行工具加密

加密要用到travis命令行工具,如果是在travis ci?web界面設(shè)置環(huán)境變量,則可直接跳過(guò)。

下面給出mac環(huán)境下操作需要注意的點(diǎn)

1.安裝命令:

brew install travis

否則很可能會(huì)出現(xiàn)問(wèn)題

2.確保在 https://travis-ci.org/ sign in with github

3.然后在項(xiàng)目根目錄里,執(zhí)行命令

travis login —auto

4.修改git設(shè)置

vi .git/config

確保

[travis]
  slug = 是你在travis關(guān)聯(lián)的倉(cāng)庫(kù)

5.添加加密環(huán)境變量

travis encrypt github-token=xxx --add deploy.github-token --com

因?yàn)楣P者登錄的travis ci域名是?https://travis-ci.com,所以要帶參數(shù) --com?,?默認(rèn)是?https://travis-ci.org

通過(guò)環(huán)境變量設(shè)置GITHUB_TOKEN

首先為Travis?CI新建一個(gè)token

點(diǎn)擊生成新token

設(shè)置權(quán)限


復(fù)制生成的token。(記得先不要刷新或離開(kāi)當(dāng)前頁(yè)面,否則token就看不見(jiàn)了,只能重新生成)

登錄Travis CI,?進(jìn)入要集成的項(xiàng)目設(shè)置頁(yè)。

添加環(huán)境變量GITHUB_TOKEN

注意,這里的環(huán)境變量是通過(guò)bash設(shè)置、并在.yml里讀取的,所以變量名是大寫加下劃線形式,這是bash的最佳實(shí)踐,千萬(wàn)別寫成github-token

GitHub Pages

查看gh-pages分支的部署情況

進(jìn)入倉(cāng)庫(kù) Settings -> Options

往下翻看,可以看到效果

因?yàn)楣P者自定義了域名,所以地址不是默認(rèn)的?https://xxx.github.io/xxx

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/105130.html

相關(guān)文章

  • vue中如何實(shí)現(xiàn)的自定義按鈕

    摘要:在實(shí)際開(kāi)發(fā)項(xiàng)目中,有時(shí)我們會(huì)用到自定義按鈕因?yàn)橐粋€(gè)項(xiàng)目中,眾多的頁(yè)面,為了統(tǒng)一風(fēng)格,我們會(huì)重復(fù)用到很多相同或相似的按鈕,這時(shí)候,自定義按鈕組件就派上了大用場(chǎng),我們把定義好的按鈕組件導(dǎo)出,在全局引用,就可以在其他組件隨意使用啦,這樣可以大幅度 在實(shí)際開(kāi)發(fā)項(xiàng)目中,有時(shí)我們會(huì)用到自定義按鈕;因?yàn)橐粋€(gè)項(xiàng)目中,眾多的頁(yè)面,為了統(tǒng)一風(fēng)格,我們會(huì)重復(fù)用到很多相同或相似的按鈕,這時(shí)候,自定義按鈕組件就...

    biaoxiaoduan 評(píng)論0 收藏0
  • JavaScript代碼整潔之道

    摘要:代碼整潔之道整潔的代碼不僅僅是讓人看起來(lái)舒服,更重要的是遵循一些規(guī)范能夠讓你的代碼更容易維護(hù),同時(shí)降低幾率。另外這不是強(qiáng)制的代碼規(guī)范,就像原文中說(shuō)的,。里式替換原則父類和子類應(yīng)該可以被交換使用而不會(huì)出錯(cuò)。注釋好的代碼是自解釋的。 JavaScript代碼整潔之道 整潔的代碼不僅僅是讓人看起來(lái)舒服,更重要的是遵循一些規(guī)范能夠讓你的代碼更容易維護(hù),同時(shí)降低bug幾率。 原文clean-c...

    liaorio 評(píng)論0 收藏0
  • 前端經(jīng)典面試題總結(jié)

    摘要:接著我之前寫的一篇有關(guān)前端面試題的總結(jié),分享幾道比較經(jīng)典的題目第一題考點(diǎn)作用域,運(yùn)算符栗子都會(huì)進(jìn)行運(yùn)算,但是最后之后輸出最后一個(gè)也就是那么其實(shí)就是而且是個(gè)匿名函數(shù),也就是屬于,就輸出第二和第三個(gè)都是類似的,而且作用域是都是輸出最后一個(gè)其實(shí)就 接著我之前寫的一篇有關(guān)前端面試題的總結(jié),分享幾道比較經(jīng)典的題目: 第一題: showImg(https://segmentfault.com/im...

    BlackMass 評(píng)論0 收藏0
  • 私有云那家好-六大私有云廠商詳細(xì)對(duì)比!

    對(duì)比內(nèi)容UCloudStackZStackVMwareQingCloud騰訊TStack華為云Stack優(yōu)勢(shì)總結(jié)?基于公有云自主可控?公有云架構(gòu)私有化部署?輕量化/輕運(yùn)維/易用性好?政府行業(yè)可復(fù)制案例輕量化 IaaS 虛擬化平臺(tái)?輕量化、產(chǎn)品成熟度高?業(yè)內(nèi)好評(píng)度高?功能豐富、交付部署快?中小企業(yè)案例多全套虛擬產(chǎn)品及云平臺(tái)產(chǎn)品?完整生態(tài)鏈、技術(shù)成熟?比較全面且健全的渠道?產(chǎn)品成熟度被市場(chǎng)認(rèn)可,市場(chǎng)占...

    ernest.wang 評(píng)論0 收藏0
  • cross-env使用記錄

    摘要:能跨平臺(tái)地設(shè)置及使用環(huán)境變量讓這一切變得簡(jiǎn)單,不同平臺(tái)使用唯一指令,無(wú)需擔(dān)心跨平臺(tái)問(wèn)題安裝方式改寫使用了環(huán)境變量的常見(jiàn)如在腳本多是里這么配置運(yùn)行,這樣便設(shè)置成功,無(wú)需擔(dān)心跨平臺(tái)問(wèn)題關(guān)于跨平臺(tái)兼容,有幾點(diǎn)注意 cross-env能跨平臺(tái)地設(shè)置及使用環(huán)境變量, cross-env讓這一切變得簡(jiǎn)單,不同平臺(tái)使用唯一指令,無(wú)需擔(dān)心跨平臺(tái)問(wèn)題 1、npm安裝方式 npm i --save-de...

    Michael_Ding 評(píng)論0 收藏0
  • webpack打包插件

    摘要:引入的模塊引入的使用將打包打包的拆分將一部分抽離出來(lái)物理地址拼接優(yōu)化打包速度壓縮代碼,這里使用的是,同樣在的里面添加 const path = require(path); //引入node的path模塊const webpack = require(webpack); //引入的webpack,使用lodashconst HtmlWebpackPlugin = require(ht...

    ChanceWong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<