利用GitHub Actions实现Hexo博客自动发布
条评论今天是2021年12月31日。
时光飞逝,自19年使用Hexo搭建博客后,已过去两年半,并未好好写过文章。今日再次拾起Hexo博客来折腾一番以备使用。
由此也记录一下此次折腾过程中的一个小难点。
先说需求,我将Hexo项目存储于GitHub的A仓库,博客项目部署于B仓库的gh-pages
分支,我想要在A仓库通过配置GitHub Actions来实现代码push
到A仓库后自动化发布到B仓库的gh-pages
分支。
难点是什么呢,其实也不难。就是在GitHub Actions的CI/CD过程中进行hexo deploy
前需要先进行GitHub的鉴权工作。那么怎么样实现CI/CD过程中鉴权呢?
首先我们来拆解问题,一是获取权限,二是为执行CI/CD任务的Runner机器赋予权限。获取权限的方式我们知道有两种,一是每次push
时输入GitHub的账号密码,二是通过SSH密钥验证的方式,第一个问题很简单不多说。第二个问题因为CI/CD本质上就是通过配置好一些命令,让其在CI/CD Runner机器上执行。因此我们只能通过CI/CD配置命令的方式赋予CI/CD Runner机器权限。所以如果我们通过SSH密钥验证的方式应该怎么做呢?
第一步,肯定需要SSH密钥生成,我们先不管它如何使用。这一步在任何机器上生成都可以,我们只是需要生成一对公钥和私钥。
1 | ssh-keygen -t rsa -C "any comment can be here" |
此处需要注意的是,尽量事先创建一个路径存储密钥,方便后续使用查找。
第二步,我们需要做的事和我们配置自己的机器SSH密钥时一样,让CI/CD Runner机器拥有私钥,将公钥配置到我们的GitHub账号中。
公钥配置到GitHub账号中自不必说,这里疑惑的是,我们的私钥怎么给到CI/CD Runner机器呢?答案就是复制粘贴。
哈哈~,没错。不过GitHub Actions提供了Secrets来为我们存储敏感信息。之后我们就可以在GitHub Actions的yml配置文件中使用而不必担心私钥泄漏了。
1 | - name: Setup Deploy Private Key |
如此配置之后,我们的CI/CD Runner机器就可以获得对我们的GitHub仓库push
的权限了。
反思。其实本次所遇问题并不难,以下参考文献作者的思路更加清晰一些。初次使用GitHub Actions,以及对于GitHub Actions中所用的SSH协议工作机制、Shell脚本命令等基础知识的不熟悉才是我们花了蛮力却办了小事的原因。它仅仅是一个CI/CD Runner机器获取git权限的问题。与在哪里存储代码,在哪里发布项目无关(这是我当时比较迷糊的地方)。
好了,写完了。新年快乐~
本文标题:利用GitHub Actions实现Hexo博客自动发布
文章作者:周锟鹏
发布时间:2021-12-31
最后更新:2023-11-22
原始链接:https://blog.zhoukunpeng.site/posts/d9c86ff2/
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!