前言
已經有阮一峰老師的持續集成服務 Travis CI 教程,為什么還要寫這篇文章?
原因有二:
文章內容有些過時
文章覆蓋度不夠,有些實踐細節沒寫出來
由于以上原因,縱然可以筆者很快在Github集成Travis?CI并成功構建,但在發布時卻踩了一些坑,折騰一波才終于發布成功。故寫下此文,旨在補充更多的細節,幫助他人少走彎路。
正文 免費購買Travis?CI應用點擊?https://github.com/marketplace/travis-ci,登錄后免費購買(開源項目集成Travis?CI不收費)。
選擇關聯倉庫選擇個人或組織名下需要關聯Travis?CI的Github倉庫。
已經設置過的,想進行修改,可以在Github的 Personal?settings-> Applications 中進入。
在項目根目錄下新建?.travis.yml?文件
touch .travis.yml發布到github pages
下面展示一個可以發布到gh-pages的例子,可以稍做修改,復制粘貼使用。
該示例包含了:
指定node.js版本
使用yarn進行安裝依賴及構建
對安裝需要的依賴進行了緩存
設置了兩個不含敏感信息的環境變量
設置了一個含有敏感信息的環境變量
把構建生成的文件部署至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/ # 默認是yarn, 如果有yarn.lock的話 install: - yarn # 默認是 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
下面對文件進行說明。
language: node_js node_js: - lts/*
第1行指定了構建環境為node.js
第2、3行指定使用node.js最新的LTS版本
env: - API_SERVER=xxx PUBLIC_PATH=xxx
上面是設置兩個環境變量。
注意,一次構建中傳多個環境變量,必須寫在同一行,使用空格分開。
env: - API_SERVER=xxx - PUBLIC_PATH=xxx
如果寫成上面的形式,則會變成兩個構建,每一個構建中只有一個環境變量。
install: - yarn script: - yarn build cache: yarn
上面指定使用yarn進行安裝依賴,安裝好后執行 yarn build?命令;?為yarn的依賴加速安裝,開啟了緩存。
下面是最關鍵的部署配置。
deploy: provider: pages github-token: $GITHUB_TOKEN skip-cleanup: true keep-history: true local-dir: dist on: branch: master
第2行指定部署到Github Pages,即倉庫的 gh-pages?分支,請確保倉庫的pages分支是 gh-pages?,?相關操作可以看這里
第3行指定保留構建后的文件
第4行指定每次部署會新增一個提交記錄再推送,而不是使用 git push --force
第5行指定構建后要部署的目錄
第6、7行指定 master?分支有提交行為時,將觸發構建后部署
第8行是部署需要用到的github-token,其中$GITHUB_TOKEN是變量,它可以在Travis CI個人倉庫的setting頁里設置,相關操作可以看這里
發布到npm再給出把node.js模塊發布到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后,在個人中心生成
因為不能泄露,所以要通過travis ci的命令行工具進行加密,執行以下命令
travis encrypt NPM_TOKEN --add deploy.api_key --com復雜例子
下面是一個復雜的例子,也是實際用到的配置,主要是
master分支才會觸發構建
執行script命令前先讀取shell中的環境變量,并生成.env文件
構建成功后
把模塊發布到npm
把文檔發布到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: levy9527@qq.com api_key: $NPM_TOKEN skip-cleanup: true相關操作 使用travis命令行工具加密
加密要用到travis命令行工具,如果是在travis ci?web界面設置環境變量,則可直接跳過。
下面給出mac環境下操作需要注意的點
1.安裝命令:
brew install travis
否則很可能會出現問題
2.確保在 https://travis-ci.org/ sign in with github
3.然后在項目根目錄里,執行命令
travis login —auto
4.修改git設置
vi .git/config
確保
[travis] slug = 是你在travis關聯的倉庫
5.添加加密環境變量
travis encrypt github-token=xxx --add deploy.github-token --com
因為筆者登錄的travis ci域名是?https://travis-ci.com,所以要帶參數 --com?,?默認是?https://travis-ci.org
通過環境變量設置GITHUB_TOKEN首先為Travis?CI新建一個token
點擊生成新token
設置權限
復制生成的token。(記得先不要刷新或離開當前頁面,否則token就看不見了,只能重新生成)
登錄Travis CI,?進入要集成的項目設置頁。
添加環境變量GITHUB_TOKEN
注意,這里的環境變量是通過bash設置、并在.yml里讀取的,所以變量名是大寫加下劃線形式,這是bash的最佳實踐,千萬別寫成github-token
GitHub Pages查看gh-pages分支的部署情況
進入倉庫 Settings -> Options
往下翻看,可以看到效果
因為筆者自定義了域名,所以地址不是默認的?https://xxx.github.io/xxx
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/105130.html
摘要:在實際開發項目中,有時我們會用到自定義按鈕因為一個項目中,眾多的頁面,為了統一風格,我們會重復用到很多相同或相似的按鈕,這時候,自定義按鈕組件就派上了大用場,我們把定義好的按鈕組件導出,在全局引用,就可以在其他組件隨意使用啦,這樣可以大幅度 在實際開發項目中,有時我們會用到自定義按鈕;因為一個項目中,眾多的頁面,為了統一風格,我們會重復用到很多相同或相似的按鈕,這時候,自定義按鈕組件就...
摘要:代碼整潔之道整潔的代碼不僅僅是讓人看起來舒服,更重要的是遵循一些規范能夠讓你的代碼更容易維護,同時降低幾率。另外這不是強制的代碼規范,就像原文中說的,。里式替換原則父類和子類應該可以被交換使用而不會出錯。注釋好的代碼是自解釋的。 JavaScript代碼整潔之道 整潔的代碼不僅僅是讓人看起來舒服,更重要的是遵循一些規范能夠讓你的代碼更容易維護,同時降低bug幾率。 原文clean-c...
對比內容UCloudStackZStackVMwareQingCloud騰訊TStack華為云Stack優勢總結?基于公有云自主可控?公有云架構私有化部署?輕量化/輕運維/易用性好?政府行業可復制案例輕量化 IaaS 虛擬化平臺?輕量化、產品成熟度高?業內好評度高?功能豐富、交付部署快?中小企業案例多全套虛擬產品及云平臺產品?完整生態鏈、技術成熟?比較全面且健全的渠道?產品成熟度被市場認可,市場占...
摘要:能跨平臺地設置及使用環境變量讓這一切變得簡單,不同平臺使用唯一指令,無需擔心跨平臺問題安裝方式改寫使用了環境變量的常見如在腳本多是里這么配置運行,這樣便設置成功,無需擔心跨平臺問題關于跨平臺兼容,有幾點注意 cross-env能跨平臺地設置及使用環境變量, cross-env讓這一切變得簡單,不同平臺使用唯一指令,無需擔心跨平臺問題 1、npm安裝方式 npm i --save-de...
摘要:引入的模塊引入的使用將打包打包的拆分將一部分抽離出來物理地址拼接優化打包速度壓縮代碼,這里使用的是,同樣在的里面添加 const path = require(path); //引入node的path模塊const webpack = require(webpack); //引入的webpack,使用lodashconst HtmlWebpackPlugin = require(ht...
閱讀 3408·2021-10-08 10:15
閱讀 5523·2021-09-23 11:56
閱讀 1472·2019-08-30 15:55
閱讀 451·2019-08-29 16:05
閱讀 2732·2019-08-29 12:34
閱讀 2045·2019-08-29 12:18
閱讀 919·2019-08-26 12:02
閱讀 1658·2019-08-26 12:00