Hexo + Github Action搭建
github仓库
首先fork https://github.com/hexojs/hexo-starter ,这个仓库是 hexo init
创建hexo站点时的文件结构模板。下文把这个仓库叫做blog仓库,是站点的源代码(markdown)仓库。
创建 <username>.github.io
仓库,这是用作github pages静态托管(html)的仓库,下文把这个仓库叫做托管仓库。
流程
不同设备的只需要和blog仓库进行markdown源码同步,而不需要NodeJS环境:
graph LR
user1([设备1])
user2([设备2])
blog(blog仓库)
public(托管仓库)
user1 <--*.md--> blog
user2 <--*.md--> blog
blog --
(github action)
NodeJS
hexo
--> blog
blog --*.html/js/css--> public
因为 hexo deploy
会自动 push
到托管仓库,就需要运行在blog仓库中的github action有 push
到托管仓库的权限,这里使用ssh key实现。
SSH key
在本地生成一对ssh公钥和私钥:
私钥
私钥存在blog仓库中。私钥不能公开,所以使用github仓库的Repository secrets功能,作为一个私密变量给github action读取。
进入仓库的 Settings > Repository secrets > Secrets and variables > Actions > Repository secrets > New repository secret
,创建一个私密变量,比如名叫private_key
,并且粘贴私钥内容。
公钥
在托管仓库中,设置公钥使blog仓库有push的权限:
在仓库的Settings > Deploy keys > Add deploy key
粘贴公钥内容,Name随意。
github action脚本
在blog仓库 Actions > New Workflow > set up a workflow yourself
创建一个空白的workflow:
写入脚本[1] (修改用户名和email字段,secrets.private_key
需要之前储存私钥的变量名相同)
如果需要增加npm包,可以在 package.json
中添加依赖,或者直接在workflow脚本中添加 npm install <package>
。
完成
启动托管仓库的github page即可。