使用 GitHub Action 來發布 Hugo 網站

最近重拾翻譯,希望自己有限的時間可以著重在「翻譯」本身,需要經常更新翻譯進度。

之前都是很手工藝要去 Blogger 貼,再自己用 InDesign 製作 epub/PDF,相當原始,花在使用工具的時間比用在翻譯時間多很多。

研究了一番使用 Hugo + GitHub Page 為解決方案,改天再來寫一篇。

這裡先紀錄一下,直接裝 GitHub Action 在 Push master 的時候能夠 Build public files 到 /docs 去,才不會有更新段落卻忘記 Build Page 更新網站。

修改來自 lisez/hugo-auto-deploy.yml。順便連同本 Repo 的更新機制也換掉了,原始碼在此

前置工作:

  1. 產一個 GitHub Personal Access Token
  2. 設定 Repo Secret
  3. 設定 GitHub Pages: Branch gh-pages / /docs
name: Hugo Publish

on:
  push:
    branches:
    - master

jobs:
  hugo-publish:
     name: publish content to public site
     runs-on: ubuntu-latest
     steps:
       - name: checkout private repo
         uses: actions/checkout@v2
         with:
           token: ${{ secrets.PUSH_REPO_TOKEN }}

       - name: checkout submodules
         shell: bash
         run: |
          auth_header="$(git config --local --get http.https://github.com/.extraheader)"
          git submodule sync --recursive
          git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1          

       - name: setup hugo
         uses: peaceiris/actions-hugo@v2
         with:
           hugo-version: latest
           extended: true

       - name: build content to public site
         run: hugo --minify --gc -t tale

       - name: deploy and publish updates
         run: |
           git config --local user.email "action@github.com"
           git config --local user.name "GitHub Action"
           git add . -A
           git commit -m "[chore] Auto publish"
           git push -u origin master:gh-pages -f           

之後就可以專心寫作,推上 GitHub 後 Action 會接續 -f 發布到 gh-pages 的事宜。