基本流程参照 https://github.com/marketplace/actions/hexo-action
Step 1. 生成 ssh key pair
首先,我们需要生成 ssh key pair。最好是专门为这个仓库生成一个 pair,因为后面需要上传私钥,如果是本机常用的 ssh key pair,会存在一定风险。
1 | ssh-keygen -t rsa -C "username@example.com" |
邮箱可以修改为自己的邮箱,询问保存 key 的文件路径时,随便写一个,避免覆盖原有的 key。
1 | ± ssh-keygen -t rsa -C "username@example.com" |
以输入 hexo
为例,在当前目录下得到 hexo
,hexo.pub
两个文件,前者是私钥,后者是公钥。
将公钥填入 Settings > Deploy Keys
。将私钥填入 Settings > Secrets
,键名设为 DEPLOY_KEY
。这样 GitHub Action 就可以利用 DEPLOY_KEY
将生成好的静态页面 push 到部署分支。
Step2: 配置 GitHub Action
创建.github/workflows/xxx.yml
,用你认为的 workflow 名字命名。Hexo Action里面给出了详细的设置,我这里只放我自己的
1 | name: Hexo Deploy |
首先我把写作分支设在了 dev,所以触发条件是 dev branch 存在 push 操作。然后我们会检查 node_modules
的缓存,如果没有缓存就 npm install
并缓存。最后我们调用 sma11black/hexo-action
,里面本质上就是帮你执行了 hexo deploy
的操作,这样编译好的静态页面就推到 master branch 了。
尝试过几次,删掉多余的 dependency 之后,GitHub Action 正常运作。
不足的地方在于调用别人的 action,可能有一些需要手动安装的依赖缺失。后续考虑研究一下 GitHub Action。