使用 Github Actions 实现 Hexo 自动部署
缘起
看到这个标题,你可能会说:我本地生成静态文件了之后再手动上传不是很方便嘛,何必要折腾这么复杂的方法呢?
但是对我来说,用这套方案还是有很多好处的。
- 源文件云端备份到 Github,丢失概率低
- 自动进行双端部署(Pages + 服务器),特别是部署到服务器会方便很多
- 随时随地,没有电脑也能修改博客内容
- …
所以就来试试看吧,反正 Actions 不要钱(?
思路
首先我们需要了解 Github Actions 的工作原理。
Github Actions 本质上就是给你提供了一台虚拟服务器,你可以编写一种特殊的脚本来指定这台服务器干些什么。
我们需要让这台服务器先克隆博客源码的仓库,随后配置 Hexo 运行环境,之后生成静态博客文件,最后发布到 Pages 或推送到我们自己的服务器。
实现
1. 新建仓库并上传源码
没什么好说的,把你的博客源文件传上去就好了。
2. 配置 Workflow
新建一个 Workflow,并粘贴下面的代码:
注意:Deploy to Github Pages 步骤中有需要自行修改的内容。
3. 配置 Secrets
打开 Github 用户设置 Developer settings
- Personal access tokens
,点击 Generate new token
,Expiration
选择 no expiration
(永不过期),下方勾选 repo 所有权限,然后点击 Generate token
。
把 token 复制下来。
打开仓库 Settings
- Secrets
- Actions
,点击 New repository secret
, Name
填 GH_TOKEN
,然后把刚才复制下来的 token 粘贴到 Value
中。
4. 尝试 Commit
任意修改一个文件并提交,理论上博客就会自动被构建并发布到 pages 分支了。
5. 配置 Github Pages
点击仓库 Settings
- Pages
,Source
中 Branch
选择 pages,并填写自定义域名,启用 https。(此处省略 Pages 配置过程)
这时候打开 Pages 发布的网站,可以顺利访问了。
EX. 发布到个人服务器
这里采用了 Rsync,保证在博客规模较大的时候也能在短时间内完成部署。在 Actions 脚本的最后加入:
注意:TARGET 中的内容需要修改为你自己的。
新建以下 Secrets:
SSH_PRIVATE_KEY
- 用于连接服务器的 SSH KEYSERVER_IP
- 你的服务器 IP
然后进行一次 Commit,生成好的文件就会自动被上传到服务器网站根目录了。
如果遇到错误…
自己去 Actions 里看日志啦(被打