使用 GitHubActions 自动化部署 Hexo 博客
Reverse Lv4

概述

使用 GitHubActions 自动化部署 Hexo 博客,可以方便地实现博客的自动化部署,避免手动部署的繁琐。

先将前置做好,比如我:

域名: hyhacct.com

配置 Actions

你需要先手动创建一个公开仓库,将其命名为xxx.github.io,比如我的就是hyhacct.github.io

然后点击上面的Actions标签

image

在这个页面搜索一个Node.js工作流,然后点击Configure按钮

image

接下来不出意外的话,你会进入一个编辑yml文件的页面,而这个 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
name: Deploy Hexo Blog

on:
push:
branches: [ "main" ] # 仅在推送到 main 分支时触发

jobs:
build-and-deploy:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true # 如果你的主题是 git submodule 形式引入的,这行很重要

- name: Use Node.js 20.x
uses: actions/setup-node@v4
with:
node-version: 20.x
cache: 'yarn' # 自动缓存 yarn 依赖,加速后续构建

- name: Install Dependencies
run: yarn install --frozen-lockfile # 使用 frozen-lockfile 确保严格遵循 lock 文件

- name: Build Hexo
run: |
yarn hexo clean
yarn hexo generate

- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.BLOG_TOKEN }} # 自动调用系统默认 Token
publish_dir: ./public # Hexo 生成的静态文件目录
publish_branch: gh-pages # 部署到该分支

创建TOKEN

你应该注意到 yml 里面引入了一个BLOG_TOKEN变量,这个是授权令牌,需要手动创建一下.

在个人设置页面,注意是个人设置,不是仓库设置哦,别搞错了,点击Developer settings -> Personal access tokens -> Tokens (classic) -> Generate new token -> Generate new token(classic)

image

然后会进入一个设置页面

  • Note 令牌描述,比如Hexo Blog
  • Expiration 令牌过期时间,可以设置永不过期(No expiration)
  • Select scopes 选择权限,这里选择repoworkflow即可

然后划到最下面,选择Generate token按钮,然后会生成一个令牌.

千万要注意,这个 Token 只能看见一次,所以一定要先复制出来保存好,并且不能泄露给任何人.

image

添加变量

在仓库的Settings -> Secrets and variables -> Actions -> New repository secret 中添加一个变量,比如我这里变量名字叫 BLOG_TOKEN,然后值就是上面生成的 Token,填进去保存即可.

创建新分支

创建一个新分支,比如我这里分支名字叫 gh-pages,然后切换到这个分支,并且将代码推送到这个分支.

1
2
git checkout -b gh-pages
git push origin gh-pages
  1. 进入仓库设置页面的Pages标签页,将Source改为:Deploy from a branch,并且下面的Branch分支需要改为gh-pages分支,然后路径注意别错了,默认就/(root)就行

  2. 选择Custom domain参数,给他设置为你的域名,比如我的就是blog.hyhacct.com,输入完成后点击 Save 保存进行 DNS 检测即可.

image