Hexo 博客架构:双仓库策略与 GitHub Actions 自动化发布实践
0. 背景
由于 2021 年的旧博客源码丢失,仅剩渲染后的 HTML 静态文件,我决定在 M4 Mac mini 上进行博客重建。本次重建的核心目标是实现“源码安全备份”与“一键自动化发布”,确保以后即便更换硬件,也能通过 Git 快速恢复工作流。
1. 架构设计:双仓库策略
为了兼顾私密性和展示需求,我采用了双仓库架构:
blog-source(Private):存放 Hexo 源码、Markdown 原稿、各种配置文件,不对外开放。UserName.github.io(Public):仅存放hexo g渲染后的静态 HTML 文件,由 GitHub Pages 托管。
2. 本地环境搭建
环境整备完全遵循“外置存储”原则,所有环境和数据均位于外置 SSD 中。
A. 基础依赖安装
1 | # 安装 Node.js |
B. 初始化与主题安装
1 | # 外置SSD的名称是 Samsung,如果不同请自行替换 |
3. 自动化流水线 (CI/CD) 配置
这是本次搭建的核心。通过 GitHub Actions,我实现了“只要 git push 源码,云端自动部署”的闭环。不用先把源码推送到 GitHub,再将静态 HTML 推送到 GitHub Pages。
A. 准备工作:生成 PAT 令牌
- 在 GitHub Settings 生成一个 Personal Access Token (PAT),勾选
repo权限。 - 在私有仓库
blog-source的 Settings -> Secrets 中,添加名为HEXO_DEPLOY_KEY的变量,值为刚才的 Token。
B. 编写 Workflow 剧本
在项目根目录创建 .github/workflows/deploy.yml:
1 | name: Hexo Deploy |
4. 过程中踩过的坑与解决方案
A. 主题文件夹上传失败(No Layout Warning)
问题:themes/butterfly 包含 .git 文件夹,导致主 Git 将其识别为子模块而跳过文件上传,导致云端渲染白屏。
解决:
1 | rm -rf themes/butterfly/.git |
B. Git 协议导致推送失败
问题:Error in the HTTP2 framing layer。
解决:
1 | git config --global http.version HTTP/1.1 |
5. 总结:我的日常发布工作流
- 写文:GoLand 顶部按钮一键
New Post,本地hexo s预览。 - 插图:直接粘贴,PicGo 自动处理。
- 发布:
git add .->git commit->git push。(也可以直接在 GoLand 上提交与推送) - 生效:等待 1 分钟,GitHub Actions 自动完成线上更新。
这套系统极大降低了写作的心理负担,让我能把精力完全聚焦在平常学习与项目复盘上。
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.