基于Github Action的自动化blog部署
前言
发送博文前总是得进行一系列重复的操作,为了更节省时间,研究了一下Github Action,这里简单的阐述一下本人部署的过程和一些探索过程中的小tips。
创建仓库
这里我之前已经有了我的
public的github.io仓库来存放我的静态博客接着需要新建一个
blog_code的private仓库来存放Hexp博客的项目源码(这里直接创建就行了,什么都不用加,加了也没事,后面git暴力合并分支就行)
生成deploy密钥
1 | ssh-keygen -f github-deploy-key |
直接命令行中执行就行,git bash也没问题,直接一路回车就行
这里会生成两个文件,私钥和公钥:github-deploy-key 、github-deploy-key.pub

这里较新的生成的格式应该都是ed25519形式的
配置deploy密钥
私钥
在你自己创建的blog_code的仓库里的 Settings -> Secrets and variables -> Actions

点New repository secret ,然后输入你的私钥名称和github-deploy-key的内容,我这里是叫HEXO_DEPLOY_PRI如果你叫别的名字要记住,后面要用
公钥
复制 github-deploy-key.pub 文件内容,在 yourname.github.io 仓库 Settings -> Deploy keys -> Add deploy key 页面上添加

还是同样的在 Title 输入框填写 HEXO_DEPLOY_PUB在 Key 输入框填写 github-deploy-key.pub 文件内容勾选 Allow write access 选项
上传源码
接下来就是把原本的Hexo源码上传到blog_code仓库
假如说你之前是采用的源码开源的双分支部署方式的话,你可能还需要检查一下原本的github.io仓库中是否混杂了源码
我这边因为之前是传到github.io仓库中的所以就没有git init了
1 | # 删除当前的 origin 远程关联 |
创建Workflow
在你的blog项目根目录里面创建.github/workflows/deploy.yml 文件
这里deploy.yml的内容有很多写法,我这里只配置了github,所以我的是这样的
1 | # Action 的名字 |
修改的话就改一下env 部分和 Install dependencies的内容,当然你也可以上网搜索别人的参考,但我找到的很多版本都比较旧了,就放结尾吧
触发Action
只需要你将文章写好了直接上传github就行了

假如你一开始没成功,github会自动给你发邮箱来告诉你失败了的(就像我一样),然后你就可以根据报错问题来排查,当然我这里报错是因为deploy.yaml参考的例子太老了,按理说照我的来应该不会报错了
可能会出现的问题
我这边用的主题是
butterfly的,因为butterfly的主题中自带有.git所以会被识别为子模块,这导致的结果就是虽然workflow成功了,但是你的博客却看不到内容,我的方案是在.gitignore中假如该主题的.git1
2
3
4
5
6
7
8
9
10
11
12.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/
_multiconfig.yml
.deploy_git*/
themes/butterfly/.git/
.idea
deploy_key/假如你一开始的
git就追踪了的话那就需要先去掉追踪再删除该内容关于
deploy.yaml的内容,需要你根据自己的版本进行动态调整,可能需要多试几下,比如假如你的加密不是ed25519的话,那你的相关内容也需要调整了

