通过 Github Action, 本地编辑 Hexo 博客并自动部署
使用 vscode + ssh 远程在服务器上编辑 Hexo 文件夹, 可以是可以但是… vscode 过不了多久就会把服务器内存和 CPU 爆掉.

首先考虑的是换个编辑器, 直接用终端 + ssh 连接和使用命令行部署, 用 yazi 做导航, 用 vim 做编辑, 可行但是太硬核了; 使用 webdev 同步比较方便, 但是没法远程部署.
最后想到使用 git 来同步, 使用 github action 来部署.
1. 将仓库上传到 github

Hexo 的文章源一般只放在 source 文件夹中, 其它文件夹大部分是 Hexo 在配置和部署时生成的, 可以不加入版本控制.
加入版本控制也是一种做法. 可以用 .gitignore 忽略掉生成的文件, 然后在编写的时候, 可以使用本地 Hexo 来预览式地部署.
另外, 这样做, 项目的意义也更明显, 文件根路径也更加合理, 同时也方便随时更改配置.
先在 github 上创建一个空仓库. 不要选择 README.md, .gitignore 和 license 文件, 仅是空仓库即可.
然后复制并保存好仓库的 ssh 地址(为什么是 ssh 而不是 https, 之后会说). 例如 git@github.com:ker0123/hexo.git.
上传到 github 的命令可以参考如下. 基本就是本地初始化仓库, 然后为仓库设置远程地址, 最后提交和推送.
如果要上传整个 hexo 文件夹:
1 | cd /path/to/hexo |
如果只上传 source 文件夹:
1 | cd /path/to/hexo/source |
2. 配置 github action
在浏览器中操作较为方便. 进入创建好的 github 上的仓库, 进入 Actions, 选择创建一个空的 workflow, 更名为 deploy.yml. 然后填入以下内容.

1 | name: deploy on server |
如果更注重隐私, 可以将 host 和 username 也作为 secrets.
然后来到服务器. 在 Hexo 文件夹中创建一个部署脚本 deploy.sh, 内容如下. 脚本做的事很简单: 拉取最新代码, 使用 hexo c && hexo g 来重新生成静态博客文件.
1 |
|
直接提交这个脚本到远程仓库, 触发 workflow, 发现执行失败.

我们需要创建一对 ssh 密钥, github 远程仓库持有私钥, 服务器中持有公钥(保存在 ~/.ssh/authorized_keys 中). 这样 github action 才可以通过 ssh 连接到服务器上执行部署脚本.
首先在任意机器上生成密钥对
1 | ssh-keygen -t ed25519 |
然后添加到仓库 secrets 中.

在 github 上手动触发 workflow, 此时应该能部署成功.

以后, 每次在本地编辑完文章, 只需推送到主分支, github 便会自动调用服务器部署脚本, 完成 Hexo 博客的自动部署.
通过 Github Action, 本地编辑 Hexo 博客并自动部署