使用 GitHub Actions 实现 Hexo 博客自动部署
hexo 本身就支持快捷部署的命令, 不过每次都要执行 hexo d
这个命令, 而且还要确保本地环境没有问题, 一旦换个环境又得重新配置,实属麻烦, 我们的原则是能躺着决不坐着, 加上
GitHub Actions 又是免费的, 不用白不用
工作原理
- hexo 的源工程文件单独建立一个私有仓库
- 每次提交完代码后触发构建
- 让 GitHub Actions 帮我们自动执行
hexo d
命令
准备工作
- 首先确保你已经创建了保存工程源代码的仓库 和 GitHub Page 仓库
- 确定你在本地执行
hexo d
可以正常部署
- 确定你在本地执行
生成 ssh key
ssh key 的作用是保证可以不用登陆也可以正常的 提交/拉去 代码, 因为把 用户名和密码暴露在网上是不安全的
1 | ssh-keygen -t rsa -b 4096 -C "$(git config user.email)" -f hexo-deploy-key -N "" |
在当前目录下生成文件:
* hexo-deploy-key # 私钥文件
* hexo-deploy-key.pub # 公钥文件
切记不要把这两个文件上传到仓库里, 避免泄露
在源代码仓库添加 私钥
在仓库页面依次点击 Settings -> Secrets -> new repository secrets, 如下图
key 设置为 HEXO_DEPLOY_KEY, 当然你也可以自取, 那后面也要跟着改
示例
1 | -----BEGIN OPENSSH PRIVATE KEY----- |
在 GitHub Pages 页添加公钥
在仓库页面依次点击 Settings -> Deploye keys -> Add deploy key, 如下图
key 可以自己取, 自己认识就行, 没有影响, 这里默认就用 hexo-deploy-keys
示例
1 | ssh-rsa AAAAB3Nza6pD .... ZYIVYIDyOFNmtjBZVyAXK+rKKYeC3U= xxx@aliyun.com |
编写 workflows 文件
在 源代码工程目录下创建流程文件 .github/workflows/deploy.yml
1 | name: Deploy # workflow name |
注意: 里面有两个需要配置的地方
user_name: 你 github 的用户名(举例: 在https://github.com/fillpit/xxxx
中fillpit
就是用户名)
user_email: 你 github 的注册邮箱
Hexo 配置
查看项目根目录中 _config.yml 文件的部署相关内容:
1 | deploy: |
这里的repo要填写ssh的形式,千万不要使用http形式
验证
现在 Hexo 已经和 GitHub Actions 已经集成了,接下来在博客源码分支上推送代码即可自动编译部署。具体
执行过程可以在 Actions 中查看:
事故现场
出现 could not read Username for ‘https://github.com': No such device or address
解决方案: 查看
_config.yml
中的 deploy.repo 字段是不是用了 http 形式的链接, 如果是就 改成 ssh 形式的, 具体配置查看上面的Hexo 配置
使用 GitHub Actions 实现 Hexo 博客自动部署
http://example.com/2021/09/06/使用 GitHub Actions 实现 Hexo 博客自动部署/