使用 GitHub Actions 持续集成 Hexo 博客并发布

之前使用 Travis CI 实现了自动生成并发布 Hexo 博客,今天发现 GitHub 集成了类似的玩法,并且功能和扩展性都要好很多。本文简单修改了 GH Pages deploy,可以选择 repo 和 branch,并实现了对Hexo更好的兼容,解决了更新时间的问题。

准备工作

目前 GitHub Actions 仍在公测阶段,需要自行申请资格

生成一个新的 token,勾选 repo 权限,然后把 token value 存储到 GitHub repo 的 Settings/Secrets 中,命名为 REPO_TOKEN

添加 GitHub Actions 配置文件

在项目根目录添加.github/workflows/hexo.yml,按照下面的参考配置填写。

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
name: Hexo CI

on:
push:
branches:
- master

jobs:
generate-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@master
with:
submodules: true

- name: Build node
uses: actions/setup-node@master
with:
node-version: 11.x

- name: Build and Generate
run: |
export TZ='Asia/Shanghai'
git ls-files -z | while read -d '' path; do
touch -d "$(git log -1 --format="@%ct" "$path")" "$path";
done
npm install && npm install hexo-cli -g && hexo generate

- name: Deploy
uses: Editst/GitHub-Pages-deploy@master
env:
BUILD_DIR: public
REPO: YOUR_GITHUB_ID/YOUR_GITHUB_ID.github.io
TARGET_BRANCH: master
EMAIL: email@example.com
GH_TOKEN: ${{ secrets.REPO_TOKEN }}

上传至 GitHub

上传后 GitHub 检测到文件夹 .github/workflows 中的 .yml 文件会自动开始执行,可以到 Actions 中查看相关的输出。祝一次成功。

参考