Hexo代码与文档仓库分离的自动化构建与部署
记录一次github action的玩耍记录
背景
迫于毕业设计的鸭梨🍐,博主决定搭建一个博客玩玩,虽然animation玩的很爽但是开发的很痛苦。
还是用框架吧。
tips: 本博客由Hexo&Fluid主题构建。
该框架是静态博客,但本博主想要实现快速自由的更新,并且希望将文档和相关代码分离,起初尝试过GitLab的实践,但奈何云服务器配置不给力,SWAP交换分区也不顶用,所以用上了github action,再结合git submodule子仓库专门用于存放markdown笔记文件。这样通过提交子仓库的文档更新,再通过webhook触发一下主仓库触发自动化部署操作,此时在主仓库的构建中连同文档所在的子仓库一起拉下来即可。
子仓库的操作这里不再赘述,友们可以参考分离 hexo 的 _posts 目录到独立仓库。
博主就是参考这位大佬的。
架构
懒得写,基本上就是通过推送submodule子仓库然后触发webhook钩子,再在主仓库的action触发一些自动化构建部署的操作。
但是这个架构会导致hexo的文章创建日期一直在最近部署的时间,找个时间再debug吧,博主还要考CET4呢。
Action配置
请先在各自仓库的设置中 “Setting -> Secrets and variables -> Actions”添加自己需要的secrets和variables,其实就是密文和明文变量。
博主这里创建的都是repository secrets和repository variables,有需要的可以根据自己的需求创建Environment secrets/variables
配置中secrets用法为 ${{ secrets.*** }}
,其中***为你自己设置的变量名称
配置中variables用法为 ${{ vars.*** }}
,其中***为你自己设置的变量名称
Hexo主仓库的Deployment.yml
1 |
|
这里用到了actions/checkout@v4和easingthemes/ssh-deploy@v3.0.1。
截止博文目前的更新日期,如果你使用ssh-deploy@v5.0.4的版本,你会遇到一些来自代码层面的奇怪bug,应该是开源作者的代码bug,如果你有相关功底可以去该项目下提交issue或提pr fix这个bug。应该是文件命名的问题,作者前面给文件创建定义了new Date
但后面获取信息没有加这段代码,会抛出no such file的错误,所以还是使用以前没有new Date
的版本吧。
文档子仓库的Trigger.yml
1 |
|
子仓库的action使用了webhook钩子,在子仓库的文档触发更新时调用这个钩子再触发主仓库的action。
注意:
Setting里的webhook满足不了自定义的请求,如果用github webhook会缺失权限,因为主仓库repository_dispatch的鉴权方式是Authorization,github webhook里你自己配置的secret会被定义成X-Hub-Signature
和X-Hub-Signature-256
的载荷,如果你配置了github webhook会发现他第一步的ping就403即权限出错。所以建议还是用action来发webhook吧。
参考
官方文档:
其他链接: