Github Actions实现自动化部署Hexo博客
痛点
在Github上面用Hexo建立自己的个人博客,用到了2个仓库,一个用来放hexo的源代码,方便更换设备后依旧可以无缝衔接写博客,另一个仓库用来展示博客网站,放的是发布文章的源代码。
那么问题就来了,现在我写完博客,既要先同步hexo代码到GitHub仓库,还要发布最新的文章到博客网页,要打两份工,很费时间,那么有没有自动化的工具来处理这些繁杂的工作?当然有的,推荐使用官方的Github Actions。
当我们将hexo代码push到远程仓库后,触发GitHub Actions的workflow,然后workflow会创建一个运行环境,获取到hexo源码,再进行构建和部署,最后发布到博客仓库。也就是说我们只要推送hexo代码,剩下的就由github Actions自动完成。
下面是具体的配置:
配置
生成deploy keys
前面提到两个仓库,一个是博客仓库,是以.gihub.io结尾的,另一个是放置hexo代码的,一定要先区分好这两个仓库。
接下来就要生成密钥,敲入如下命令
1 | ssh-keygen -f github-deploy-key |
当前目录下会有 github-deploy-key 和 github-deploy-key.pub 两个文件,我觉得也可以用GitHub配置ssh密钥的这两个文件,不过为了区分,可以单独再创建这两个文件。
配置博客仓库deploy keys
打开博客仓库,结尾是.gihub.io,打开Settings,按照下图操作
将github-deploy-key.pub里面的密钥全部复制到Key里面,title可以自己定义。上面的deploy keys是我以前配置的,别管他。
配置Hexo仓库Secrets
打开Hexo仓库的Settings,找到Secrets按照下图操作
将github-deploy-key的内容全部复制到Value中,Name自己定义,上面的2个也是我之前配置的,不用慌。
编写Github Actions
创建配置文件
点击打开Actions 创建workflows
可以选择一个nodejs模板,也可以不选,直接复制下面我给出的模板
对照下面的配置模板,选择性粘贴进创建的yml文件,也可以全部粘贴,试试效果,再改
1 | # This is a basic workflow to help you get started with Actions |
简单解释一下,当我们推送内容到远程main分支的时候,就会触发这个Workflow。
使用最新的Ubuntu作为hexo deploy的系统。
首先checkout源代码,然后设置使用最新的Node.js v12 LTS作为node解释器。
接着就是配置SSH相关的配置文件,secrets.HEXO_DEPLOY_PRI_XIAOXIN_WINDOW,这个名字一定要对应配置Hexo仓库Secrets
git config相关的名字和邮件地址替换成大家自己使用的就好了。
最后就是安装Hexo CLI,各个依赖模块和部署了。
验证效果
下面就是运行成功的效果,成功的都会打上勾
失败了的话可以打开看看哪里报错了,再仔细看看哪里配置不对,再修改。成功了,博客仓库的更新有一点时间的延迟,耐心等待几分钟就好了。
最后贴上自己搭建的博客网站:
https://xiaoborao.github.io/