Hexo + Github Action 实现推送后自动更新博客静态资源

这几天完成了hexo博客的自动化部署,实现了Hexo + Github Action 推送(git push)后自动更新博客静态资源,记录一下,主要是分享工作流的配置,话不多说,开干。

1. 创建Github仓库

首先,在Github上创建两个仓库,分别用于存放博客源文件和生成的静态资源。

  • 博客源文件仓库:用于存放博客的源文件,例如:hexo-blog
    这个仓库可以设置为私有的,防止_config.yml文件中某些隐私设置泄露。待会还需要再这个仓库中设置秘密变量和工作流。
  • 静态资源仓库:用于存放生成的静态资源,格式为:Github用户名.github.io。 例如:我的就是 xswangcode.github.io
    1. 注意:静态资源仓库的名称必须是 Github用户名.github.io,否则无法使用Github Action的部署功能。
    2. 两个仓库的主分支都为 main

2. 配置工作流

Github Action 官方文档

2.1 创建工作流文件

在博客源文件仓库[hexo-blog]中,创建一个 .github/workflows/deploy.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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
name: Build and Deploy View 

on:
workflow_dispatch:
push:
branches:
- main

schedule:
- cron: '0 4,16 * * *' # 每天12点和24点自动执行

permissions: read-all

jobs:
build:
runs-on: ubuntu-20.04
permissions:
contents: read

steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
ref: main
repository: xswangcode/hexo-blog
timezoneLinux: "Asia/Shanghai"


- name: Set up Node.js
uses: actions/setup-node@v1
with:
node-version: 20

- name: Cache node_modules
uses: actions/cache@v2
env:
cache-name: cache-node-modules
with:
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-


- name: Install dependencies
run: npm i package.json -g

- name: Install Hexo-cli # 安装 Hexo
run: |
npm install hexo-deployer-git
npm install hexo-cli -g
echo "install hexo successful"

- name: Build Blog
run: |
hexo clean
hexo g
echo "build blog successful"

- name: Deploy DoubleAm's Blog # 设置 git 信息并推送静态博客文件
env:
GIT_NAME: xswangcode
GIT_EMAIL: ${{ secrets.GH_EMAIL }}
GH_TOKEN: ${{ secrets.GH_TOKEN }}
run: |
git config --global user.name "$GIT_NAME"
git config --global user.email "$GIT_EMAIL"
sed -i -e "s/https:\/\/github.com/https:\/\/${{ env.GH_TOKEN }}@github.com/g" _config.yml
hexo deploy

- run: |
echo "Deploy Successful!"
echo "Visit website: https://xswangcode.github.io !"
echo "Visit website: https://xswang.pages.dev !"

上边的很多配置也参考了其他人的配置,感谢各位大佬的分享。

2.2 修改工作流内容

下面说下要改的位置

  1. 25行:repository: xswangcode/hexo-blog 替换成你自己的仓库地址,如果你按照上面的步骤做的话,就把用户名改成你自己的就行。
  2. 64行:这里是配置git用户,需要把用户名改成你自己的。
  3. 75行:同上,这一行是输出最后网站的路径。这个不影响最终部署,但是会显示在 github action 的日志中。
  • 如果觉得太麻烦,也提供一个最简单的方案:在编辑器中打开deploy.yml 文件,搜索 xswangcode,全部替换成你自己的名字就够了,也可以正常执行。

2.3 准备Github Token

可以看到我在65行和70行都是在配置Github Token,这个Token是用来在部署时,让Github Action 能够提交代码到你的仓库的。
先要创建一个Token,在Github的设置中,找到 Developer settings,然后找到 Personal access tokens,点击 Generate new token,然后输入一个Token的名称,选择 repoworkflow 权限,然后点击 Generate token,生成一个Token,这个Token只会显示一次,所以要保存好。


2.4 配置Github Secrets

在Github的仓库中,找到 Settings,然后找到 Secrets,,点击 New repository secret,然后输入一个名称,这里我输入的是 GH_TOKEN,然后把之前生成的Token粘贴到 Value中,点击 Add secret,这样就配置好了。
然后按照相同的步骤添加GH_EMAIL变量。

2.5 检查hexo 配置

如果你的hexo博客的所有配置已经修改完成了,并且也在根目录的_config.yml配置了deploy相关内容,如下。

1
2
3
4
5
deploy:
type: git
repo: https://github.com/xswangcode/xswangcode.github.io.git # 这里改成你自己的仓库地址!
branch: main
message: "🎉update by Github Action💯 - {{ now('yyyy-MM-dd hh:mm:ss') }}"

2.6 设置Github Pages

在静态资源的 xswangcode.github.io仓库中,找到 Settings,然后找到 Pages,然后把 Source 设置为 main branch / root ,然后点击 Save。 设置完成后如下:

2.7 见证奇迹的时刻

在hexo-blog 目录下,执行

1
hexo new test

然后执行然后把新增加的文件提交并推送到Github仓库。静等1分钟左右,进去https://{你的用户名}.github.io/ 看看吧。

-------------    本文结束  感谢阅读    -------------

欢迎关注我的其它发布渠道