使用Github Pages来自动部署Hexo博客
一、前言
这个系列的文章网上估计已经烂大街了,但我还是有必要将自己搭建Hexo中遇到的一些坑记录下来。
1.1 起因
事情是这样,之前一直有个想法:把自己散落在各大博客网站的文章聚合起来,形成自己的知识体系。所以在二月份就有了自建博客网站的想法。俗话说:“凡事预则立,不立则废”,于是我按照Hexo官网的教程搭建了博客。
早期是使用Travis CI来自动发布博客的,但是呢,Travis CI现在开始收费了,我在免费用了一个月的Travis CI后发现3月23号之后的文章都无法再发布。登上去Travis CI才发现试用结束,要花钱买。挣钱嘛,不寒碜。于是我去看了下Travis CI的订阅价格:
Umm……虽说已经是工作快5年的社畜,身上还是有一点积蓄的。但关键是这玩意儿我不常用啊(谁能保证自己天天都有时间写博客呢),这样下来很不经济。Umm……我猜是新冠疫情让Travis CI嗅到了敏锐的商机,所以才这么堂而皇之的割韭菜吧。Umm。算啦,劳资不用它了。
1.2 Travis CI的替代品
Umm,到这里大家可能都会想到Github Actions,这个官方出品的自动化CI/CD工具它不香吗,而且一个月有20000分钟的免费构建时长(说实话这个构建次数对我来说已经完全足够了)。好,那我就用它来构建Hexo博客。
二、艰难的配置历程
2.1 Jekyll真的垃圾
说实话,要搭建好这一切其实并不容易,我从开始网上寻找文档到真正弄好也花了好几天的时间,期间也踩坑不少。首先需要明白几点:
- Github Pages采用了Jekyll来生成静态内容,如果使用Hexo来构建博客,必定会死在主题构建这一步(我踏马当时被这个东西折腾的那叫一个难受啊)
- Jekyll的主题真是太特么丑了,还是Hexo的主题好看一些;
- 如果是使用github-pages建站,写了CI/CD脚本会交给一个叫”pages-build-deployments”的机器人执行,只有它完成构建,你的博客才能顺理成章地发布;
可想而知当时被Jekyll这个垃圾坑的有多惨了(每次都是在构建主题失败了)
2.2 临时解决方案
如果没办法使用自动部署,那么每次发布博客的步骤是这样:
- 提前按照hexo-deploy-git插件;
- 每次写完博客在本地执行
hexo clean && hexo deploy
,插件会自动将静态内容发布到gh-pages分支上; - 再把本地提交推到master分支;
相当于你要提交两次代码,我觉得完全没必要做重复工作,所以我觉得摸索Github Actions来实现一次提交和部署;
三、正确的打开方式
好在办法总比困难多,我最终还是找到了自动化构建的方式,我们去Github Marketplace搜索下面这款插件:GitHub Pages action
,这款插件已经有了非常丰富的文档。你只需要按照文档的操作步骤来做就行了。
言归正传,我们说一下具体的配置方法:
(1)创建Github Action的配置文件
使用终端路由到博客的根目录,执行下面的命令:
1 |
|
YAML文件的名称随意就行
(2)指定构建分支
1 |
|
(3)设置构建基础镜像
1 |
|
(4)设置构建步骤(在步骤三的基础上设置)
1 |
|
生成SSH Keys的命令如下:
1 |
|
然后去Github Project Setting设置如下:
Add Actions Secret,名称为ACTIONS_DEPLOY_KEY,内容为刚才用SSH生成的私钥;
Add Deploy Key,这里记得一定要勾选“Allow Write Access”选项;内容为刚才生成的SSH公钥
(5)在gh-pages
目录新增一个.jekyll
文件
去Github Repository的gh-pages分支上查看下有没有.jekyll
这个文件,如果没有,添加一个。
这个文件的作用是在执行pages-build-deployment不用Jekyll来生成静态内容,这样的话,你的主题用什么就无所谓啦。
(6)提交配置,去Actions查看效果
可以看到两个构建都成功了,到此大功告成。哈哈!
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!