之前写博客的时候还没注意,后来在修改博客的时候,发现不停的敲命令发布确实烦。
为了解决博客发布占用时间的问题,查了一圈论坛,和相关人员的解决方案。
最终,我选中了github Action,对于托管在github上的hexo来说,这玩意真是好用。
另外,我目前只部署到github上,暂时不考虑部署到gitee和coding上。
正文
方案选择
在正式确立工作流之前,这里是有两个方案的。
- 在GIthub.io那个仓库中新建源码分支,等到分支提交时候,触发命令,然后github流程化部署,博客上线
- 新建一个仓库,用来管理博客,博客每次提交,就会触发命令,然后github流程化的自动部署,博客上线
这两种方案,一开始我更倾向于第一种,因为没什么必要,不多开项目,总是好的。
但是后来考虑到源码内容中,总会有这种隐私性质的秘钥之类的,放在开源项目确实不好。
而且,目前很多论坛都倾向于第二种方案,想了想,那这里选择新建仓库吧。
新建仓库
参考市面上大多数人的选择,我在github建了一个blog仓库,注意新仓库是私有的。
因为,这个仓库是用来存博客源码的,为了规避秘钥被别人看到,所以不能设置为public!
在新仓库准备完成之后,我们清空本地仓库的远程链接,然后,让本地的hexo博客源码和远程新仓库完成对接。
这里我魔改了一下安知鱼大佬的流程,咳咳,如果要新建仓库的话,就参考他的教程,我这是对已有的源码修改。
删除博客主题的git文件,比如我这里是anatolo。我删除了
/themes/anatolo/.git
文件,避免主题文件夹下的.git
文件夹其被识别成子项目,无法被上传到源码仓库。在博客根目录下,运行指令,我这里是在E:\gitPro\blog
1
2
3git init #初始化
git remote add origin git@github.com:crazystudent13/blog.git
git checkout -b main # 切换到main分支,添加屏蔽项
因为能够使用指令进行安装的内容不包括在需要提交的源码内,所有我们需要将这些内容添加到屏蔽项,表示不上传到 github 上。这样可以显著减少需要提交的文件量和加快提交速度。
我再
E:\gitPro\blog\.gitignore
,屏蔽了以下文件,如果你应用了主题里边的配置项,记得,主题里边的gitignore文件也要完成修改。1
2
3
4
5
6
7
8
9TXT.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/
.deploy_git*/
.idea之后再运行 git 提交指令,将博客源码提交到 github 上。
1
2
3git add .
git commit -m "github action update"
git push origin main此时你的主题文件夹若已经被正常上传,并且你也添加了主题文件夹下的.git 文件夹的屏蔽项。那你可以考虑把第二步移走或删除的
.git
放回来,用作以后升级。(个人觉得这种升级方式不是很好)
获取权限
为了确保交由Github Action
来持续部署时,Github Action
具备足够的权限来进行 hexo deploy
操作,需要先获取 Token
访问 Github->头像(右上角)->Settings->Developer Settings->Personal access tokens->generate new token。
注意事项:
- 名称自己琢磨功能随便填下就行,我这里填的是自动部署。
- 必须勾选 repo 项 和 workflows 项。
- token 只会显示这一次,之后将无法查看,所以务必保证你已经记录下了 Token。之后如果忘记了就只能重新生成重新配置了。
建立流程
打开github在项目的actions下,点击new workflow,新建一个autodeploy.yml的文件就行,然后把我下边的脚本放上去,就能完成博客的自动化部署了。
我之前用别人的脚本并未一次通关,所以自己查资料调整了一下,这里放调整结果。
1 | name: 自动部署 |
这里有很多人直接按照教程走会出现有些坑,我这里稍微提一下我遇到的情况:
- 不要乱改命令,上述代码中checkout@v2,这个对应的是功能,不是版本。
- 注意本地和远端的冲突,在提交完成代码之后,可以在github远端创建自动部署脚本,不用本地新建文件夹,去产生冲突。
- 注意博客源码分支名称,2021年修改之后,新建的项目主分支应该是main,如果你用到的脚本中有些地方写的是master,记得改成main。
- 注意博客分支名称,也不要完全都改成main分支,我的博客是2019年部署的,废弃很久不用,现在又捡起来,所以分支依然还是master,最后提交的脚本,如果是提交到main,就会报错。
- 自己主题内的配置要提交,不然构建博客的时候,页面构造命令可能会出现跑不通的情况。
- 移除不需要的依赖,不然可能会造成不必要的错误,另外这样也减少下载时间。
- 尝试AI帮忙写脚本,目前2023年,chatgpt发展的还不够狂野,但是我试过,是可以书写这类脚本的。
调试流程
在完成上述内容之后,基本上应该是一步到位的完成。
如果要是不成,可以打开actions,一步步点进去,看到一个类似shell命令行的界面,里边会将哪个脚本报错,具体步骤的问题提示出来,按照报错排查就行。
具体操作参考安知鱼的视频讲解
结语
在2019年知道有这个,但是没怎么用过。
没想到几年不见,自动化部署流程这么好用了,看来我这几年的工作,导致我的眼界太不宽阔了。
这里也非常感谢大佬安知鱼这篇文档的指路,真的对我的自动化部署要求产生了很大的助力。