突然想捡起来,把Hexo的东西整整,CI的自动部署关掉了,重新用GitHub的action来进行自动部署;
首先
你需要知道Hexo部署的正常逻辑;
大致逻辑上如上图所示,在Github仓库展示的(一般仓库名都是xxxx.orangeshinee.github.io
)只是静态文件
,不包含本地的源码,类似Themes
主题文件等配置;
而我们需要做的,就是把本地源码
和最后要生成展示的静态文件
分开保存,同时备份,这样在你更换电脑或者换了生产环境的时候,可以随时把源码pull下来继续更改,不用担心丢失问题;
那么
Github Action是如何工作的?能解决什么问题?
简单来说,就是能够监控你源码的更改状态,如果你的源码有更改,那么GA就会在线上帮你进行Hexo Generate
和Hexo Deploy
工作,不需要自己再手动部署;
同时,也分离了源码及静态文件,方便我们随时随地写文档;
然后
1.新建仓库
假设你已经在本地部署过了,那么你的网站仓库已经有了; 接下来,我们新建一个仓库,把本地的源码上传上去,同时将这个仓库的属性改为个人可见(这步可选);
2.SSH配置
在本地打开git bash,然后运行
ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/hexo_key
会在本地生成一对公钥&密钥,公钥就是后缀为.pub
的文件;
如果你是windows电脑,那么配置文件会在c://users/YourName/.ssh/
文件夹中;
公钥部署
右键用记事本先打开公钥,即后缀.pub
的文件,复制;
打开静态文件仓库(xxxxx.github.io),点击设置,将公钥粘贴进去;
私钥部署
同上,我们将私钥的文本内容复制,部署到源码仓库;
这里的位置与公钥不一样,私钥部署是在Secrets
的Actions
中,点击右上角添加私钥;
需要注意名称,我们将私钥名称设置为DEPLOY_KEY
(也可以是其他名字),在后续步骤会用到;
3.新建Action
然后转到Actions
设置,点击New workflow
新建一个工作流,会生成一个xxx.yml的文件,名字可随意;
4.编辑配置文件
|
|
编辑完成后保存;
5.没病走两步
上述增加Actions的步骤是在Github网站进行的,你也可以在本地进行,就是在仓库根目录新建一个.github
文件夹,然后在里面新建一个workflows
文件夹,然后将xxx.yml文件放入;
在本地更新一个文档,然后进行push;
此时Actions页面会自动运行一个任务,点进去可以看到详情; 黄色代表运行中,绿色代表部署成功,红色表示部署失败;
一些坑
- Node.js的版本问题,这个前面说过了,建议与本地的版本一致;
- Hexo的版本问题,如果你的版本过低,有些配置会进行更改导致不再生效,需要用新的配置;
例如我这里的
Deprecated config detected: "external_link" with a Boolean value is deprecated. See https://hexo.io/docs/configuration for more details.
,就是指external_link
的配置已经不再使用了,转为用external_link.enable: true
这种配置; - SSH的部署问题,如果发现部署失败,里面提到
[email protected]: Permission denied (publickey).
类似的,多半是因为私钥或者公钥没有部署好导致的,可以仔细看看上面的步骤;
AND
以上,完成了自动部署的整体工作,自己也大概了解了action的逻辑,后面就可以少折腾了;
参考: