Hexo 部署利器:GitHub Actions 实现自动化发布
Hexo 部署利器:GitHub Actions 实现自动化发布
dong4j简介
一直在使用 hexo-deploy-git 插件部署我的部署到 Github Page, 不知道最近抽什么风, Github Pages 部署一直失败.
今天有空查看了日志才发现一直使用的是 Jekyll 来编译我的静态文件, 应该是我以前的博客需要使用 Jekyll 来编译, 不过现在已经不需要了, 因为我上传的已经是 Hexo 编译后的静态文件了, 最近应该是修改了某些插件导致 Jekyll 解析 URL 出现了问题所以才暴露了这个问题.
解决方法
因为我直接上传的 Hexo 编译后的今天文件, 所以只需要将静态文件通过 Github Action 拷贝到 Github Pages 即可, 所以部署应该更简单, 下面是详细过程.
修改 Pages 配置
Github Pages 默认使用 Jekyll 来部署:
所以这里需要修改为使用自定义 action 来部署:
添加 action 配置
1 | # Simple workflow for deploying static content to GitHub Pages |
意思是会将 deploy
分支部署到 GitHub Pages, 操作步骤一目了然.
部署命令
这里放弃了使用 hexo-deploy-git
插件, 直接使用自定义命令来执行部署, 定制化更强.
需要定制的操作是 Github Action 的配置如何处理.
因为我们知道 hexo-deploy-git
其实是将编译到 public
目录下的文件全部拷贝到 .deploy_git
目录下, 然后执行强推覆盖仓库的文件的, 所以我们需要想办法将 GitHub Action 配置添加到仓库, 下面是全部的部署命令:
1 | mkdir -p .deploy_git \ |
因为我使用 makefile 来管理 hexo 的整个生命周, 而上面的命令应该是 hexo g 之后才能执行.
关键的操作为:
- 使用 deploy 分支, 这个需要和 Github Action 配置保持一致;
- 拷贝
public
目录下编译后的文件到.deploy_git
目录中; - 添加
.github/workflows
中的 Action 配置文件, 添加.nojekyll
文件从而禁用 Jekll(可选); - 强制推送到远端仓库;
问题
一套流程下来, 执行 GitHub Action 是出现了问题:
需要修改一下 rules, 删除这个 rule 即可:
总结
这套流程操作下来, 减少了部署时间, 主要是我沿用了老博客的 Github Pages 配置, 但是今天才爆出问题我也非常诧异, 没想到 Jekll 的兼容性这么好.