GitHub Actions 自动构建Hexo 并发布到 gh-pages

引言

当文章较多时,Hexo生成较慢,比较耗时,而且还需要 手动发布到 gh-pages,过程比较繁琐,而 GitHub Actions 作为 GitHub推出的免费CI/CD服务,正好可以用来解决这一问题,我们只需将源代码推送到GitHub,由Action自动帮我们构建Hexo,并完成发布到 GitHub Pages,不仅可用于博客,也可用于自动发布在线文档。

新建 deploy-hexo.yml

在当前项目 Hexo 根目录新建 .github/workflows/deploy-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
name: Build and Deploy Hexo
on:
push:
branches:
- master
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout 🛎️
uses: actions/checkout@master

- name: Use Node.js 12
uses: actions/setup-node@v2-beta
with:
node-version: '12'

- name: Install Pandoc
run: |
sudo apt-get install pandoc

- name: Install and Build 🔧
run: |
npm install -g hexo-cli
npm install
hexo clean
hexo generate

- name: Deploy 🚀
uses: JamesIves/github-pages-deploy-action@3.7.1
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH: gh-pages
FOLDER: public

补充:

  1. ${{ secrets.GITHUB_TOKEN }} 其中 GITHUB_TOKEN 为内置变量,无需在secrets手动添加

    参考:Authentication in a workflow - GitHub Docs

  2. gh-pages 为目标deploy分支,master 为当前触发分支,如果你的开发分支为 main,你需要更改为 main

    并且,你可能需要做 BASE_BRANCH 设置,如下:

    1
    2
    3
    4
    5
    6
    7
    - name: Deploy 🚀
    uses: JamesIves/github-pages-deploy-action@3.7.1
    with:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    BRANCH: gh-pages
    FOLDER: public
    BASE_BRANCH: main

    注意:最后一行,设置了开发源分支为 main

  3. 如果你没有使用 hexo-renderer-pandoc 来处理 Markdown 中的 LaTex数学公式,那么无需下方此步骤:

    1
    2
    3
    - name: Install Pandoc
    run: |
    sudo apt-get install pandoc

GitHub: GitHub Pages Deploy Action

测试

1
git commit -m 'test'
1
git push

进行一次 git push 即可触发 Actons,接下来,查看日志:

如上图,构建成功,右上角点击还可以下载日志,查看原日志。

注意:建议,先执行 hexo d 发布一次,以便创建 gh-pages 分支

查看仓库,切换到 gh-pages 分支,如下可见构建情况:

前往 GitHub首页,即动态页,可以看见一次 来自 github-actions bot 的推送:

参考

感谢帮助!