使用Travis CI給hexo部署做持續整合
阿新 • • 發佈:2021-06-29
為什麼要使用持續整合?
首先來回憶下使用hexo釋出一篇部落格的基本步驟吧:
hexo new "xxx"
- 寫部落格
hexo c
hexo g
hexo d
以上是hexo寫一篇部落格的幾個基本步驟,值得一提的是hexo g和hexo d兩個操作,generate是hexo將我們寫的md檔案轉換成網頁靜態資原始檔的過程,執行這個命令後,你的部落格根目錄下的public資料夾中的檔案就是deploy到git上的資料夾,你可以比對確認。
此外,如果你像我一樣,還把hexo的資原始檔(不是public目錄下生成部署使用的網頁資源)同步推送到git上進行備份,那麼還需要使用額外的git命令:add,commit,push。
這樣一看是不是就有些麻煩你了呢?而持續整合就可以十分方便的簡化我們維護部落格的過程,配置完成後,你在寫完一篇部落格後只需要在blog根目錄執行git push操作,讓CI工具幫你處理hexo的一系列生成過程即可。
怎麼使用?
-
首先註冊Travis-CI賬戶,可以直接使用GitHub賬戶登入;
-
註冊完成後到GitHub上生成自己的token,之所以使用token是因為CI環境沒有我們的SSH金鑰,但hexo的deploy會操作我們的倉庫;
-
有了token後,複製,到Travis-CI點選你的部落格倉庫,右上角點選進入設定,新增一個環境變數(環境變數名無所謂,方便識別就行,如:GITHUB_TOKEN),值就是生成的token,如圖所示:
-
在部落格根目錄新增
.travis.yaml
檔案,本人配置內容如下:language: node_js #指定使用的語言 node_js: stable #採用nodejs的最新版本 # 指定快取模組,可選。快取可加快編譯速度。 cache: directories: - node_modules before_install: - export TZ='Asia/Shanghai' # 更改時區 # Start: Build Lifecycle install: - npm install # 執行清快取,生成網頁操作 script: - hexo clean - hexo generate # 指定部落格分支 branches: only: - hexo #觸發持續整合的分支 # 指定部落格的倉庫地址 env: global: - GH_REF: https://${GITHUB_TOKEN}@github.com/yantuyouyuxian/yantuyouyuxian.git # 設定git提交名,郵箱;替換真實token到_config.yml檔案,最後depoy部署 after_script: - cd ./public - git init - git config user.name "xxxx" - git config user.email "[email protected]" - git add . - git commit -m "TravisCI 自動部署" - git push --force --quiet "${GH_REF}" master:main
踩的坑
整個過程唯一要注意的一點就是將CI生成的public資料夾push到git的路徑設定問題,也就是.travis.yaml
中after_script部分。
- 首先進入public資料夾,就是生成的網頁資源靜態檔案
- 然後將這個資料夾推送到我們部署部落格的git倉庫
- 因為這裡是CI線上的虛擬環境,不像我們本地配置了ssh金鑰可以直接操作git倉庫,所以需要用到token,token的使用就如GH_REF變數所示
- 最後是
master:main
意思是將本地的master分支推送到目標倉庫的main分支的意思