自动部署博客
本文介绍通过 Github Actions 和 Cloudflare Pages 服务两种方式自动部署博客。
Github Actions
生成用于仓库间推送的秘钥:
1 | ssh-keygen -f hexo-deploy-key -t rsa -C "l1xnan@qq.com" |
其会在当前路径生成两个文件:
- 私钥:
hexo-deploy-key - 公钥:
hexo-deploy-key.pub
我们将博客源码放在代码仓:
1 | https://github.com/l1xnan/blog.git |
在此仓库下进入 Settings > Secrets and variables > Actions 中添加一个 Secret,名称为 HEXO_DEPLOY_KEY,值为 hexo-deploy-key 文件内容。后续在 Workflow 中通过名称 HEXO_DEPLOY_KEY 使用这个密钥。
Github Pages 部署在代码仓:
1 | https://github.com/l1xnan/l1xnan.github.io.git |
在此仓库下进入 Settings > Deploy keys 中添加 Deploy key,值为 hexo-deploy-key.pub 文件内容,同时勾选 Allow write access 选项。
模仿 Hexo 针对 Github Pages 官方帮助做一下调整。在博客源文件仓库 blog 添加文件 Workflow 配置文件.github/workflows/pages.yml,内容如下:
1 | name: Deploy Hexo |
这样我们提交 blog 代码仓文件时,会自动触发 Action 构建,并自动推送到 l1xnan.github.io 仓库,完成博客更新。
对普通用户 GitHub Actions 提供了每月 2000 分钟的免费额度,触发一次 action 在 30s 左右,完全够用。如果使用 hugo 单次耗时会更短。
如果只是备份提交不想触发 Action,可以在提交信息中添加以下任何字符串:
[skip ci][ci skip][no ci][skip actions][actions skip]
或者,可以用两个空行结束提交消息,后跟:
skip-checks:trueskip-checks: true
Cloudflare Pages
Cloudflare 也推出了 Pages 服务,使用 Cloudflare Pages 可以神方便的把 Hexo 部署到 Pages 中,且可以完全私有化部署,不要公开相关代码仓。
操作上非常方便,只要注册 Cloudflare 账号,进入面板,在 Pages 页中创建项目,关联到 Github,指定读取 blog 权限,根据页面引导填写一些配置,即可完成部署,提供免费域名,例如:https://l1xnan.pages.dev。
这样我们每次提交 blog 仓,会触发部署构建,自动更新网站。Cloudflare Pages 每月免费 500 次构建。
如果想临时跳过构建和部署,可在提交信息中添加 [CI Skip]、 [CI-Skip]、 [Skip CI]、[Skip-CI] 或者 [CF-Pages-Skip] 标志(不区分大小写)。
注意和 GitHub Actions 共有的标志有 [skip ci] 和 [ci skip]。