Hexo 自动部署 Workflow
00 前言
在使用 Hexo 时,在写完一些文章/进行一些更改时,我们总是需要手动部署 Hexo ,比如使用 hexo-deployer-git
来使用 git 进行部署。那么,是否可以编写一个 workflow 扔给 GitHub,在我们每次把博客源码推送至 GitHub 仓库时可以自动构建、部署博客?
当然可以。
01 原理
请注意,以下所述方法,适用于将博客分离为两个仓库–一个为博客源代码仓库,一个为被部署的仓库–的用户使用
GitHub 提供免费的 CI功能,这意味着我们可以利用它,从而实现我们的目标。
Hexo 提供了一个 generate
的参数,运行 hexo g
可以在博客源代码的根目录里的 public
文件夹下找到我们构建得到的内容。此文件夹内容即需要被推送至被部署的仓库的所有文件。
通过使用 GitHub CI,我们可以做到在 CI 中克隆被部署仓库,并将生成的文件复制进克隆下来的仓库,再进入克隆的仓库目录进行提交,这样,我们就可以避免一些手动部署带来的弊端。
我们在这里不使用 hexo-deployer-git
。以下是一些原因:
-
无法保存被部署仓库的提交历史。
hexo-deployer-git
会初始化一个新仓库并强制推送到我们的被部署仓库,这会导致我们的被部署仓库在每次部署时会丢失先前的推送记录。这会导致你每年的提交数量统计会少很多。 -
每次都需要手动进行清理、构建、部署。我们每次都需要先
hexo clean
再hexo generate
再hexo deploy
才能完成一次部署,真的很麻烦。
02 实现
以下是本博客使用的 workflow,可以作为借鉴。
name: Deploy blog to GitHub |
03 用法 & 效果
在你的博客源代码仓库的根目录,创建文件夹 .github/workflows
,并在里面放入上文所述 workflow 文件,并把后缀改为yml,你就完成了 Hexo 自动部署的工作。
效果如下: