使用Github Actions自动化推送Hexo博客

MagicNue

用Github提供的自动化流程替代手动的Hexo Deploy。

因为以后的我会忘记这次部署,所以还得写一份本次的目的和操作步骤。

Hexo 博客 GitHub Actions 自动部署备忘录

1. 部署目的

用自动化流程替代手动编译。本地不再需要维护 Node.js 和 Docker 环境,只需编写 Markdown 源码并 push 代码。环境搭建、网页生成和发布操作交由 GitHub Actions 自动完成。

2. 分支策略

仓库使用双分支管理:

  • Source 分支:作为默认分支,存放 Markdown 源码、Hexo 配置文件、主题文件及 package.json
  • Hexo 分支:作为展示分支,只存放云端编译后生成的静态 HTML 网页,供 GitHub Pages 读取。

3. 初始配置步骤

获取 Token

  1. 登录 GitHub,进入 Settings -> Developer settings -> Personal access tokens (classic)
  2. 点击生成新 Token,期限选 No expiration,权限勾选 repoworkflow
  3. 复制生成的 ghp_... 字符串保存备用。

配置仓库 Secret

  1. 进入博客的 GitHub 仓库页面,点击 Settings -> Secrets and variables -> Actions
  2. 新建 Repository secret,Name 填 GH_TOKEN,Secret 填入刚才复制的 Token。

配置本地 .gitignore
确保本地 Hexo 根目录存在 .gitignore 文件,过滤掉无需上传的生成文件和依赖项。包含以下内容:

1
2
3
4
5
6
7
.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/

编写 Actions 工作流脚本
在本地 Hexo 根目录创建文件:.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
name: Deploy Hexo Blog

on:
push:
branches:
- Source

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout Source
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Cache node modules
uses: actions/cache@v4
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 }}-

- name: Install Dependencies
run: |
npm install -g hexo-cli
npm install

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

- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v4
with:
personal_token: ${{ secrets.GH_TOKEN }}
publish_dir: ./public
publish_branch: Hexo

注:此方案直接使用 actions-gh-pages 插件推送,无需再配置 _config.yml 中的 deploy 字段。

设置 GitHub Pages 源
进入仓库 Settings -> Pages,在 Build and deployment 选项中,Source 选择 Deploy from a branch,Branch 选择 Hexo 分支和 / (root) 目录,保存。

配置本地 Git 免密
在本地终端执行以下命令记录凭据,后续 push 代码无需重复输入 Token:

1
git config --global credential.helper store

4. 日常发布流程

配置完成后,日常写完文章或修改配置,只需在根目录执行 Git 提交命令:

1
2
3
git add .
git commit -m "更新文章"
git push origin Source

代码推送到 Source 分支后,GitHub Actions 会自动触发并在后台完成编译和网页发布。

5. 常见问题记录

  1. 弃用 hexo-deployer-git 的原因
    Hexo 原生的部署插件在 CI/CD 环境下容易因变量解析失败或 SSH 权限缺失报错。改用第三方的部署 Action 可以绕过这些不稳定因素。
  2. 推送时出现 [rejected] 报错
    说明云端仓库的内容与本地不一致产生冲突。在确认本地源码是最新的前提下,可使用 -f 参数强制推送覆盖云端:git push -f origin Source
  3. 仓库中多出 dependabot 相关分支
    这是 GitHub 自动检查依赖更新的机器人。当检测到 Hexo 程序或主题有新版本时,会自动创建分支并提交 Pull request。可以在网页端确认合并以升级版本,或者不予理会。
  • Title: 使用Github Actions自动化推送Hexo博客
  • Author: MagicNue
  • Created at : 2026-04-09 20:38:00
  • Updated at : 2026-04-09 14:33:16
  • Link: https://magicnue.top/posts/记录/使用Github Actions自动化推送Hexo博客/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments