hexo使用github action实现自动化部署
最近将hexo博客进行了美化,为了更“折腾”一点,决定实现一下hexo对应的自动化部署,毕竟网上的资料对应的也有不少,学习一下。
我自己的需求是
- 将hexo、hexo生成的静态文件、博客源码都放在一起(个人感觉方便管理,免得创建许多仓库),然后hexo主要就在hexo分支上
- 在hexo分支上进行自动化,实现上传文件后自动部署。
查看博客点击👉https://bugcat9.github.io/
查看博客仓库点击👉https://github.com/bugcat9/bugcat9.github.io
在这里先说明一下我的项目的分支结构,我是将项目放到了bugcat9.github.io下,下面有master、gh-pages、source、hexo四个分支
- master,啥也不干起说明作用
- gh-pages,放hexo生成的静态文件
- source,存放源文件
- hexo,存放hexo文件,并部署了自动化
上传hexo项目文件
🤗如果会将hexo项目安全上传到github上的可以直接跳过这步了。感觉这步写的有点啰嗦
一般来说一个hexo项目如下图所示
本人上传的之前是先直接删除了下面几样东西:
.github
文件夹,包括根目录和themes
里面的- 因为
themes
里面的主题有的是git clone
来的,所以我也给删除了.git
文件夹
然后将剩下的文件,上传到新的仓库或者某个仓库的某个分支,我是给上传到了bugcat9.github.io下的hexo分支
生成密钥
因为需要将hexo项目生成的静态文件上传到github上(跟本地上传类似),所以需要生成密钥进行上传。
生成命令
1 | ssh-keygen -t rsa -b 4096 -C "Hexo Deploy Key" -f github-deploy-key -N "" |
在windows下可以通过git bash
生成,相信在配置git的时候应该了解过
ssh-keygen
命令讲解可以看的➡https://www.linuxcool.com/ssh-keygen
这会在当前目录生成两个文件:
- github-deploy-key —— 私钥
- github-deploy-key.pub —— 公钥
配置私钥
把私钥放在hexo项目的代码仓库当中的Secrets中,这是为了配置action的时候使用,在我这里就是bugcat9.github.io项目(hexo分支)
依次点击Setting
、Secrets
、New repository secret
输入名字HEXO_DEPLOY_KEY,以及对应的内容,然后就可以生成Repository secrets了
配置公钥
把公钥放在需要上传静态文件的项目中,在我这里也是bugcat9.github.io项目(gh-pages分支)
依次点击Setting
、Deploy keys
、add deploy key
输入名字HEXO_DEPLOY_PUB ,以及对应的内容,然后记得勾选Allow write access
,然后点击Add key
配置其他内容
在我这里面要配置gitalk
的CLIENT_ID和CLIENT_SECRET的值,配置方法和配置私钥是一样的
CLIENT_ID:
CLIENT_SECRET:
最终
创建 Workflow
在 Hexo 的仓库或者hexo中创建一个新文件:.github/workflows/deploy.yml
,文件名可以自己取,但是一定要放在 .github/workflows
目录中,文件的内容如下:
1 | name: Hexo Deploy |
简单来说,就是上传文件到hexo的时候,他会触发这个Workflow,然后构建ubuntu最新的环境,接着构建nodejs环境、git环境、hexo环境,再设置gitalk,最后再运行hexo clean
、hexo deploy
进行上传
但是这里存在一个问题如果我们hexo分支不在default分支,默认是触发不了的Workflow的,需要将hexo切换成default分支才能触发。切换的方法是
然后就可以通过上传进行触发了。
后续的话,将master切换回default也是可以触发的。
结束语
配置自动化部署其实不是很难,就是刚刚接触github action啥都不懂耽误了很久,在这小结一下,方便自己日后换电脑的时候使用。