GitHub Actions 自动化部署 Hexo 到Github pages
条评论好久没写Blog了,准确来说,好久没发布Blog了。由于电脑环境的变化,之前的的环境都找不到了,懒得修,这次切换到自动化部署,以后专心写markdown。
环境
在 GitHub 建好两个仓库,
私有仓库,存放Blog源码仓库
公开仓库:存放Github Pages仓库:username.github.io 仓库
Blog源码仓库私有化是一些主题配置有一些API_Token,所以和 Github Pages 仓库分开管理。
一个仓库也是可以的,直接参考Hexo 官方部署方案。
设置密钥
GitHub Actions是在Blog源码仓库执行的,为了确保 GitHub Actions 能够推送代码到Github Pages仓库,使用SSH 密钥的方式来执行git的推送。
生成新 SSH 密钥
在本地计算机上生成新的 SSH 密钥。 生成密钥后,可将公钥添加到 GitHub.com 上的帐户中,以便通过 SSH 为 Git 操作启用身份验证。
1 | ssh-keygen -t ed25519 -C "your_email@example.com" -f github-deploy-key |
一路回车下去,当前目录下就会生成 github-deploy-key
和 github-deploy-key.pub
。
千万注意:在提示符下,键入安全密码的时候,直接回车不要输入密码。
1
2 > Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]如果输入了密码,那么重新生成一个吧。
向你的Github帐户添加新的 SSH 密钥
向 GitHub.com 上的帐户添加SSH 公钥github-deploy-key.pub
的内容。
在 GitHub 任意页的右上角,单击个人资料照片,然后单击“设置”。在边栏的“访问”部分中,单击 “SSH 和 GPG 密钥”。单击“新建 SSH 密钥”或“添加 SSH 密钥” 。在 “Title”(标题)字段中,为新密钥添加描述性标签。在“密钥”字段中,粘贴公钥。单击“添加 SSH 密钥”。
为了保险起见,你可以在本地先测试下 SSH 连接,确保设置成功。
1 ssh -T git@github.com
Blog源码仓库设置
借助存储库环境中创建的环境变量Secrets and variables设置SSH 私钥,GitHub Actions 读取并保存下来还原成SSH 私钥文件。
进入Blog源码仓库页面 → Settings → Secrets and variables → actions → New repository secret,Name 填 HEXO_DEPLOY_PRI
,Secret 填 github-deploy-key
私钥的内容。
Github Pages仓库设置
进入Github Pages仓库页面 → Settings → Deploy keys → Add deploy key,Title 填 HEXO_DEPLOY_PUB
,Key 填 github-deploy-key.pub
公钥的内容。
这里有一个坑,如果你在[2.2 向你的Github账户添加新的SSH密钥](##
向你的Github帐户添加新的 SSH 密钥)会发现这里添加不上,来看一下Github对Deploy keys 部署密钥的说明:部署密钥是授予对单个存储库的访问权限的 SSH 密钥。GitHub 将密钥的公共部分直接附加到您的存储库(这里是Github Pages仓库)而不是个人帐户,并且密钥的私有部分保留在您的服务器上(这里是执行Github Action的Blog源码仓库)。
升级最新版本的Hexo
我之前的Hexo版本是5.0+的版本了,怕在部署的时候遇到一些版本问题,所以直接重新安装最新版本的Hexo,在本地调试好确保可以在本地正常生成和部署页面。
参考Hexo官方文档:https://hexo.io/docs/
直接安装好环境,把旧的source 文件夹迁移过去即可。
注意更新
package.json
中的所有依赖包到最新版本,使用npm-check-updates
是一个有用的工具,可以用来更新package.json
中的所有依赖包到最新的版本。全局安装 npm-check-updates:
1 npm install -g npm-check-updates检查可更新的依赖:
1 ncu这会列出所有可以更新的依赖包及其新版本。
更新
package.json
中的依赖版本:
1 ncu -u这会自动更新
package.json
中的依赖版本。安装更新的依赖:
1 npm install这会列出所有可以更新的依赖包及其新版本。
更新特定依赖
如果你只想更新某个特定的依赖包,可以使用
npm install
命令并指定最新版本或使用@latest
标签。
1
2
3 npm install [package-name]@latest
例如,要更新 hexo 到最新版本
npm install hexo@latest
Github Actions 脚本
在你的Blog源码仓库根目录下创建一个 .github/workflows 文件夹,在该文件夹内创建一个新的 YAML 文件(例如 hexo-deploy.yml)用于定义 GitHub Actions 工作流。
完整的 GitHub Actions 配置文件内容如下:
1 | name: Deploy hexo blog |
配置部署信息
要使
hexo d -g
正常工作,你需要在Blog源码根目录下的_config.yml
文件中配置部署信息。配置如下:
1
2
3
4 deploy:
type: git
repo: git@github.com:username/username.github.io # 更改为你的 GitHub Pages 仓库, username 是你的用户名
branch: gh-pages # GitHub Pages 分支
提交本地的 Blog源码仓库即可触发 Github Actions 工作流实现自动部署,然后访问你的 username.github.io !
Reference
使用 GitHub Actions 自动发布 Hexo 博客
利用 GitHub Actions 实现自动化部署 Hexo 到 Github Pages
本文标题:GitHub Actions 自动化部署 Hexo 到Github pages
文章作者:xmaihh
发布时间:2024-07-10
最后更新:2024-07-10
原始链接:https://xmaihh.github.io/blog/2024/07/10/github-actions-zi-dong-hua-bu-shu-hexo-dao-github-pages/
版权声明:采用[CC BY-NC-SA 4.0许可协议]进行许可
分享