hugo 博客系统,大部分人应该都在使用,但是部署的方式,也不相同。Github Actions 这么好用的工具已经出来好几年了,但是一直都没尝试过。本次就简单记录一下使用 Github Actions 自动部署 hugo 博客的方法。
两个仓库
如果想使用 Github Actions 自动部署 hugo 博客,则最起码需要创建两个 Github 的仓库。
- 第一个,便是存储博客 .md 源文件的地方,其实就是 hugo 系统;
- 第二个,则是部署 Github Pages 的仓库,仓库名必须是
<username>.github.io,这是 github 官方要求的。
具体流程
当我们提交博客 .md 源文件到仓库 1 后,利用 Github Actions 自动执行 hugo 的命令,将 .md 源文件生成为 html 文件,放在 public 目录下,然后再将 public 目录推送到仓库 2;由于仓库 2 是 Github Pages,它接着就会自动执行部署的命令。
这样,我们的博客网站就部署好了,这极大地简化了我们发布文章的流程。
Github Actions
在管理 .md 源文件的仓库 1,点击 Actions 按钮,即可添加工作流文件,该文件一般是以 .yml 结尾,这样才能被 Github 识别。我创建的文件名为 deploy.yml,内容如下:
| |
on 表示 GitHub Action 触发条件,上述文件设置了 push、workflow_dispatch 和 schedule 三个条件:
push,当这个项目仓库发生推送动作后,执行 GitHub Action;workflow_dispatch,可以在 GitHub 项目仓库的 Action 工具栏进行手动调用;schedule,定时执行 GitHub Action,如设置为北京时间每天早上执行。
首先,需要将上述 deploy.yml 中的 EXTERNAL_REPOSITORY 改为自己的 GitHub Pages 仓库,如我的设置为 realchoi/realchoi.github.io。
此外,因为我们需要从 .md 源文件的仓库 1 推送到外部 GitHub Pages 仓库 2,需要特定权限,所以还得在 GitHub 账户 Setting - Developer settings - Personal access tokens (https://github.com/settings/tokens)下创建一个 Token:

将权限设置为开启 repo 与 workflow:

最后在我们的 .md 源文件的仓库 1 中添加一个 secret,名称为 deploy.yml 中的 PERSONAL_TOKEN,值为上一步生成的 token。
现在,就可以往 .md 源文件的仓库 1 中推送一片 .md 文章了,然后就会发现 GitHub Pages 仓库 2 将同步更新。