使用GitHub Action自动部署Hexo博客

本教程参照安知鱼Akilar的文章,稍作改动完成。

获取 Token

打开New personal access token,创建一个Token。

创建的 Token 名称随意,但必须勾选repo项 和workflows项,同时Expiration选择no expiration

创建完成后会显示Token,只会显示一次,请务必复制保存记录。否则遗忘则只能重新生成重新配置了。

新建私有仓库

打开Create a new repository,创建一个名为Hexo-Source-Repo的仓库并设置为私有仓库

创建成功后复制仓库的ssh地址下面会用到。

配置 Github Action

在[Blogroot]下新建.github文件夹。然后在里面新建workflows文件夹,再在workflows文件夹内新建 autodeploy.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

name: 自动部署
# 当有改动推送到main分支时,启动Action
on:
push:
branches:
- main
release:
types:
- published

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: 检查分支
uses: actions/checkout@v2
with:
ref: main

- name: 安装 Node
uses: actions/setup-node@v1
with:
node-version: "16.x"

- name: 安装 Hexo
run: |
export TZ='Asia/Shanghai'
npm install hexo-cli -g

- name: 缓存 Hexo
id: cache-npm
uses: actions/cache@v3
env:
cache-name: cache-node-modules
with:
path: node_modules
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: 安装依赖
if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }}
run: |
npm install --save

- name: 生成静态文件
run: |
hexo clean
hexo generate

- name: 部署到Github
uses: JamesIves/github-pages-deploy-action@v4
with:
token: ghp_****************
repository-name: Amnesia-f/amnesia-f.github.io
branch: main
folder: public
commit-message: "${{ github.event.head_commit.message }} Updated By Github Actions"

其中token字段请替换为上面创建的,repository-name字段请替换为自己的原.io结尾的仓库名称

重新设置远程仓库和分支

添加屏蔽项

打开[Blogroot]/.gitignore,替换为以下内容:

1
2
3
4
5
6
7
8
9
10
11
12

.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/
.deploy_git*/
.idea
themes/anzhiyu/.git

记得将最后一行的`anzhiyu`更换为自己使用的主题名称

删除.git文件夹

删除 [Blogroot]/themes/anzhiyu/ 下的 .git 文件夹,原因是主题文件夹下的.git文件夹的存在会导致其被识别成子项目,从而无法被上传到源码仓库。

运行指令

在博客根目录下运行如下指令:

1
2
3
git init
git remote add [此处替换为上文复制的ssh地址]
git checkout -b main

提交源码

1
2
3
4
5

git add .
git commit -m "github action update"
git push origin main

检查部署

打开新建的Hexo-Source-Repo仓库界面,点击上方菜单栏中的Action,点击Deploy,等待部署完成后若如下图所示所有项目都打钩即为部署成功!

享受自动部署

打开你的vscode,每次对博客进行改动后,按下 Ctrl + SHift + G 即可打开源代码管理界面,

在Hexo一栏填入此次改动的关键信息后点击提交,再点击同步更改即可!

参考文章