前言
已經(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)入。
在項(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
摘要:在實(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í)候,自定義按鈕組件就...
摘要:代碼整潔之道整潔的代碼不僅僅是讓人看起來(lái)舒服,更重要的是遵循一些規(guī)范能夠讓你的代碼更容易維護(hù),同時(shí)降低幾率。另外這不是強(qiáng)制的代碼規(guī)范,就像原文中說(shuō)的,。里式替換原則父類和子類應(yīng)該可以被交換使用而不會(huì)出錯(cuò)。注釋好的代碼是自解釋的。 JavaScript代碼整潔之道 整潔的代碼不僅僅是讓人看起來(lái)舒服,更重要的是遵循一些規(guī)范能夠讓你的代碼更容易維護(hù),同時(shí)降低bug幾率。 原文clean-c...
摘要:接著我之前寫的一篇有關(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...
對(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)占...
摘要:能跨平臺(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...
摘要:引入的模塊引入的使用將打包打包的拆分將一部分抽離出來(lái)物理地址拼接優(yōu)化打包速度壓縮代碼,這里使用的是,同樣在的里面添加 const path = require(path); //引入node的path模塊const webpack = require(webpack); //引入的webpack,使用lodashconst HtmlWebpackPlugin = require(ht...
閱讀 3420·2021-10-08 10:15
閱讀 5659·2021-09-23 11:56
閱讀 1482·2019-08-30 15:55
閱讀 461·2019-08-29 16:05
閱讀 2740·2019-08-29 12:34
閱讀 2054·2019-08-29 12:18
閱讀 927·2019-08-26 12:02
閱讀 1663·2019-08-26 12:00