如何正确的使用 GitHub Actions 实现 Hexo 博客的 CICD
CI/CD (continuous integration and continuous deployment)
最近同事分享了 GitHub Actions ,发现除了我们常听到的自动部署(项目上线)外还可以做很多事情,比如说就可以自动生成 Hexo 博客,我擦!这不就是我想要的吗?以后就不用每次写完文章之后再执行 hexo clean && hexo g -d 了。
回来各种百度,有几篇针对 HEXO 的文章,照着开始写脚本,发现怎么都不能成功,各种错误。折腾了 3 个小时,终于顺利通过了。
项目背景
我先介绍一下我的项目背景:
| 项目 | 说明 |
|---|---|
https://github.com/huangdijia/blog |
用于存放 hexo 生成的项目,可以理解成源码 |
https://github.com/huangdijia/huangdijia.github.io |
存放 hexo 编译后的静态文件,也是我的博客页面 |
以下说明都是以我的两个项目为例子
密钥生成
因为 hexo 编译后需要 push 到 huangdijia.github.io 上,需要 GitHub 的账号密码(尝试过不行)或者密钥,我们需要用 ssh-keygen 命令生成一组私钥(没有后缀名)和公钥(.pub结尾)
1 | ssh-keygen -f github-deploy-key # 三次回车即刻 |
会生成 github-deploy-key 和 github-deploy-key.pub 两个文件。
配置 GitHub 仓库
配置 blog 仓库
打开 https://github.com/huangdijia/blog/settings/secrets 点击 Add new secrets,分别在
Name输入HEXO_DEPLOY_PRIValue输入前面生成的私有 KEYgithub-deploy-key的内容
配置 huangdijia.github.io 仓库
打开 https://github.com/huangdijia/huangdijia.github.io/settings/keys,点击 Add deploy key,分别在
Title输入HEXO_DEPLOY_PUBKey输入前面生成的私有 KEYgithub-deploy-key.pub的内容
编写 Action 脚本
使用前先要申请,然后点击 Actions -> Set up this workflow 或直接打开 https://github.com/huangdijia/huangdijia.github.io/actions/new
1 | name: HEXO CI |
修改 _config.yml repo
如果原来是 http 的,要改为 ssh 格式
如:
1 | deploy: |
享受成果
在 blog 项目任意 push,在 https://github.com/huangdijia/blog/actions 都有响应的执行记录
注意
切记不要把账号密码写在脚本上!!!