用 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 目录。

后记

如果大家有什么改进的好方法,可以在下方评论!