使用GitHub Action实现HEXO的自动编译和发布
经过上一篇的步骤之后,我们已经可以将我们的HEXO站点发布到GitHub上了,并且可以正常访问。但是我们每次更新文章以及站点配置的时候必须先在本地进行编译、然后再部署到GitHub上,也就是每进行一次修改,必须执行以下命令
1 | hexo g |
那有没有一种方法就是,系统检测到我们发布了新文章,然后自动进行程序的编译和发布呢?
今天部署的这个GitHub Action服务就是解决这个问题的。在上一篇文章中我们在 GitHub上还新建了一个私人仓库,我们今天用这个私人仓库来进行操作。
¶1.修改本地文件
¶删除主题文件夹下隐藏的.git文件夹
¶删除hexo根目录下的.deploy_git文件夹
这两个是我踩过的坑,因为主题文件和hexo deploy git工具是git clone到本地的,所以如果直接上传到GitHub仓库的话,只会上传一个空的指针文件夹,之后进行自动化编译的时候会报错,所以必须删除本地的.git相关信息。
¶2.将本地HEXO源文件推送到私人仓库
在hexo文件夹中初始化hexo
1 | hexo init |
关联远程仓库
1 | git remote add origin git@github.com:miaoyanginfo/hexo-action.git |
和远程仓库进行一个同步
1 | git pull --rebase origin main |
将本地文件添加到暂存库
1 | git add . |
添加注释
1 | git commit -m "init repo" |
推送到GitHub私人仓库
1 | git push -u origin main |
如果一切顺利的话,我们就会在GitHub的私人仓库中看到我们PUSH上去的HEXO文件夹和文件。
¶3.生成并部署deploy公钥和密钥
定位到本地hexo文件夹运行以下命令创建deploy key:
1 | ssh-keygen -f github-deploy-key -C "HEXO CD" |
运行完成之后会在hexo根目录下生成github-deploy-key和github-deploy-key.pub两个文件,一个私钥,一个公钥。
进入github我们创建的私人仓库,settings-secrets添加actions secrets。
名字输入 SSH_PRIVATE
value输入生成的github-deploy-key内容,也就是私钥的内容。
进入github我们创建的公开仓库,找到settings-deploy keys,
名字输入 HEXO_DEPLOY_PUB
内容输入github-deploy-key.pub文件内的所有内容,也就是公钥的内容。
¶4.创建GitHub Action文件
进入GitHub私人仓库页面,切换到Actions选项,创建一个名为deploy.yml的文件,内容复制下面:
1 | name: Deploy # Actions 显示的名字,随意设置 |
¶5.测试Action是否正常运行
我们现在私人仓库/source/_posts文件夹下新建一个.md的日志文件,然后切换到Actions选项卡看下自动化执行过程是否有报错,如果运行正常的话,我们进入公开仓库,看下文件的最后修改时间是不是最近几秒钟内。
然后我们再打开我们的github站点地址,看看是不是有新日志已经发布了。
¶总结
经过两篇文章的操作,我们已经可以实现HEXO在GitHub上面的部署以及使用GitHub的Action功能来实现文章发布时自动编译和部署。如果在部署过程中遇到问题,欢迎和我交流。