之前我已经习惯了自己在本地部署 Hexo 并 push,也写过一个一键 push 到博客部署仓库和博客仓库的 shell 脚本,如下:
1 |
|
一直这么用着,也没有觉得比 GitHub Actions 麻烦很多,直到当我有同时在笔记本和台式上写博客的需求。deploy 到 GitHub 过程中,如果此次部署的电脑和上次不同,会导致博客部署仓库的 Git 提交记录冲突,必须使用 forced update
,导致每次都需要把所有文件重新传一份。
于是开始学习了 GitHub Actions。发现还不错。而且网上也有现有的部署 Hexo 的中文教程可用。下面转载这篇文章,并加入自己的理解。
准备 Hexo 网站
在本地建立一个 Hexo 站点,可以参考官方快速开始文档。
建立两个 GitHub 仓库,分别叫 blog
(私有的,名字可自取)和 your_github_username.github.io
(公有的)。前者用来存储博客源文件,后者用于存储博客部署文件。这里我选择 lyh543.github.io.backup
存储博客源文件,lyh543.github.io
存放博客部署文件。
然后将本地的博客源文件推送到 lyh543.github.io.backup
仓库。
准备 SSH 秘钥
为了方便运行 GitHub Actions 时登录 GitHub 账号,我们使用 SSH 方式登录。
在本地使用 ssh-keygen
生成一组公私秘钥对:
1 | ssh-keygen -t rsa -b 4096 -f ~/.ssh/github-actions-deploy |
生成了公钥 ~/.ssh/github-actions-deploy.pub
和私钥 ~/.ssh/github-actions-deploy
。
在 GitHub 的 Settings->SSH and GPG keys
添加刚刚生成的公钥,名称随意。
在 lyh543.github.io
仓库的 Settings->Secrets
里添加刚刚生成的私钥,名称为 ACTION_DEPLOY_KEY
。
如果在 Hexo deploy 过程中还需要 sftp
部署到服务器,则还需要在服务器添加私钥:在本地执行 ssh-copy-id -i ~/.ssh/github-actions-deploy.pub root@you-server-ip.com
。
设置 Hexo 的部署配置
在 _config.yml
添加部署配置:
1 | # Deployment |
配置 GitHub Actions
在 lyh543.github.io.backup
仓库的 Actions 选项卡下点击新建 workflow,编写如下配置。
1 | name: Deploy Blog |
直接将配置复制覆盖左边的编辑框的内容即可。名称可自取。然后在本地 git pull
。
之后就可以在 GitHub Actions 看到这次部署了。