使用Hugo建立GitHub Pages需要兩個分支(或兩個儲存庫), 分別存放Hugo項目及編譯後的靜態網頁, 因此每次修改網站, 都需要提交兩個分支的更改

使用wercker自動部署可以簡化工作流程. 只需提交Hugo分支的更改, wercker就能自動拉取Hugo分支, 然後編譯並提交到發佈分支

建立wercker application

  1. wercker註冊帳號, 並連結GitHub
  2. 進入Add application頁面建立application. 只需要選擇儲存庫, 其他選項保留預設值

設置訪問令牌

  1. 進入GitHub tokens頁面, 建立一個新令牌
  2. 進入你的wercker application頁面, 進入Environment分頁
  3. Key輸入GIT_TOKEN, Value輸入你建立的令牌, 然後Add

設置Workflows

  1. 在你的wercker application頁面, 進入Workflows分頁
  2. 點擊Pipelines下方的build, 在Ignore branches輸入master, 然後按Update
  3. 回到Workflows, 點擊Add new pipeline
  4. Name和YML Pipeline name都輸入deploy, 然後Create
  5. 回到Workflows, 點擊路線圖中, build右方的加號
  6. Execute pipeline選擇deploy, 然後Add

提交部署代碼

在Hugo分支建立wercker.yml, 貼上以下代碼, 將hugo-tranquilpeak-theme替換為你的theme, 完成後提交wercker.yml

box: golang:latest

build:
  steps:
    # Clone theme子模組
    - script:
        name: initialize and update git submodules
        code: |
            git submodule init
            git submodule update --remote --recursive
    # hugo build
    - arjen/hugo-build:
        version: "HEAD"
        theme: hugo-tranquilpeak-theme # 替換為你的theme

deploy:
  steps:
    - install-packages:
        packages: git ssh-client
    # 提交public文件夾到master分支
    - sf-zhou/gh-pages:
        token: $GIT_TOKEN
        branch: master
        basedir: public

所有步驟完成後, 以後每次在Hugo分支進行提交, master分支都會自動更新

參考