破茧重生:从成品站到 GitHub + Cloudflare 的自动化双部署实践

缘起:不满足于“拿来主义”

昨天,我初步完成了一个 Hexo 博客的搭建,并成功部署到了 GitHub Pages。当时应用了非常漂亮的 Fluid 主题,并且通过配置开启了对 $\LaTeX$ 复杂公式的渲染支持。

公式测试:
$$e^{i\pi} + 1 = 0$$
看到上面这个优美的公式能正常显示,就知道 MathJax/KaTeX 已经成功 Run 起来了。

然而,之前的搭建过程更像是在一个“成品站”的基础上修修补补。作为一个 CS 人,总觉得如果不从零开始清理一遍底层逻辑(尤其是那些乱糟糟的 Git 索引和子模块记录),心里总是不踏实。于是,我决定:推倒重来,构建一套更稳健、更快速的工作流。


核心进化:双平台并行部署

为了优化国内的访问速度,我不再局限于 GitHub Pages,而是引入了 Cloudflare Pages 进行同步托管。

1. 为什么选择双部署?

  • GitHub Pages:老牌稳定,作为主仓库的直接产物。
  • Cloudflare Pages:全球 CDN 加速,尤其是国内访问速度提升明显,且支持自动监听 GitHub 提交。

2. 踩坑记录:消失的 landscape 与子模块阴影

在重新搭建的过程中,遇到了最棘手的问题:GitHub Actions 报错找不到主题文件。

  • 现象:GitHub 网页上 themes/landscape 文件夹带有一个“白色小箭头”,无法点击。
  • 原因git clone 带来的 .git 文件夹让 Git 误以为它是子模块(Submodule),只传了索引没传内容。
  • 方案:强制执行 git rm -r --cached .,彻底大扫除,重写 Git 账本。

现在的自动化工作流

现在,我的发布流程已经进化到了“傻瓜式”级别:

  1. 本地创作:使用 VS Code 编写 Markdown 源码。
  2. 一键推送git push 到 GitHub 的 main 分支。
  3. 双重构建
    • GitHub Actions 自动编译并推送到 gh-pages 分支展示。
    • Cloudflare Pages 实时感应并启动分布式构建。

总结

这次“重装系统”式的搭建过程虽然折腾,但让我彻底理清了 Git 索引、GitHub Actions 自动化部署以及静态网站托管的逻辑。

未来,这里将是我记录技术心得和生活点滴的新起点。Stay hungry, Stay foolish!