用 GitHub Actions 部署 Hexo 部落格

最近有一個朋友找我,說她弄了一個 Hexo 部落格,想做 GitHub Actions 自動部署,奈何不會弄,只好讓我幫忙。

GitHub Actions

GitHub Actions 是 GitHub 推出的持續整合服務,最近不要錢了,用(白嫖)的人就多起來了。

程式碼

話不多說,直接上程式碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
name: "Hexo Blog Builder"

on: [push, pull_request]

jobs:
build:
name: "Hexo Blog Build"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 1
- uses: actions/setup-node@v1
with:
node-version: '12'
- name: Install Hexo
run: npm install -g hexo
- name: Install Dependencies
run: npm install
- name: Clean Previous Build
run: rm -rf docs
- name: Hexo Clean
run: hexo clean
- name: Generate New Build
run: hexo generate
- name: Move docs/
run: mv public docs
- name: Publish
run: |
mkdir -p ~/.ssh/
echo "${{ secrets.KEY }}" > ~/.ssh/id_rsa.pub
chmod 600 ~/.ssh/id_rsa.pub
ssh-keyscan github.com >> ~/.ssh/known_hosts
git config --global user.name "Hexo Deploy Bot"
git config --global user.email "nobody@nobody.nobody"
git config --global core.quotepath false
git add --all
git commit -m "Hexo Blog Build"
git push origin master

本 Action 需要你的 ssh 公鑰,也就是 id_rsa.pub 存在專案設定中的 Secrets 內。

TL;DR

具體實現很簡單,用 Hexo 自帶生成器生成到 public 目錄,把 public 目錄改名為 docs。最後 push 到專案裡。

push 使用 SSH Key,實現免密碼。

在 GitHub Pages 設定中,需要把 Source 改為 docs 目錄。

後記

如果大家有什麼改進的好方法,可以在下方評論!