1. 程式人生 > 其它 >使用Travis CI給hexo部署做持續整合

使用Travis CI給hexo部署做持續整合

為什麼要使用持續整合?

首先來回憶下使用hexo釋出一篇部落格的基本步驟吧:

  1. hexo new "xxx"
  2. 寫部落格
  3. hexo c
  4. hexo g
  5. 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的一系列生成過程即可。

怎麼使用?

  1. 首先註冊Travis-CI賬戶,可以直接使用GitHub賬戶登入;

  2. 註冊完成後到GitHub上生成自己的token,之所以使用token是因為CI環境沒有我們的SSH金鑰,但hexo的deploy會操作我們的倉庫;

  3. 有了token後,複製,到Travis-CI點選你的部落格倉庫,右上角點選進入設定,新增一個環境變數(環境變數名無所謂,方便識別就行,如:GITHUB_TOKEN),值就是生成的token,如圖所示:

  1. 在部落格根目錄新增.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分支的意思