前情提要
每次更新 Blog 文章,皆需手動執行指令部屬有點小麻煩 (指令可以參考 使用GitHub + Hexo 建立個人blogger 中第9點 發表文章)。
原本從 Local 端執行部屬指令時,上傳到 Github Pages 的檔案只有編譯過後的靜態網頁檔案,之前有提過如果Blog 原始草稿檔不見的話會很難復原,所以趁著這個機會將 Blog 原始草稿檔案交由 GitHub 管理,也透過 Github Actions 功能自動化部署簡化更新 Blog 文章的流程。
作法
Step1. 在 GitHub 上,新增一個 private 的 repository 存放 Blog 原始草稿
Step2. 產出 SSH 部署私鑰
若先前有設定過 GitHub 配置的 Global SSH key 可以跳過這個步驟。
沒有設定過的話,可以參考我之前寫的這篇文章產出公私鑰與設定 Global SSH key 解決Github push 身份驗證失敗。
Step3. 調整 Step1.Blog 原始草稿 repository 部署私鑰
路徑:Settings > Secrets and variables > Actions > New repository secret
Name : 輸入 HEXO_SSH_PRIVATE_KEY
Value : 輸入SSH 部署私鑰產出的內容
請注意 HEXO_SSH_PRIVATE_KEY 這個名稱後續會在yml配置中用到,兩邊必須一致,否則執行部屬時,會讀取不到鑰匙。
Step4. 在原始草稿 repository,新增 GitHub Action 設定與寫 workflow 腳本
路徑: Actions > New workflow > set up a workflow yourself.
基本上 github 會另外開個虛擬機作為workflow 的執行環境,會依照yml
中的指令執行。
以下是我的yml
設定:
1 | # 配置檔名稱 |
Step5. 發表文章
依照上方yml
檔案設定只要將草稿 commit 到指定的branch (master),就可以輕輕鬆鬆的發佈新文章了!
每 commit 一次就會有對應的部屬紀錄
Step6. Deploy 失敗除錯方法
當你發表文章後,遲遲沒有看到網頁的更新,
可以查看每次的部屬紀錄,如果有報錯,這邊會展示錯誤訊息。