使用 GitHub Pages 可以很方便的将静态网站部署到公网,Hugo 生成的静态博客也同样适用。 不过,每次都手动将网站代码 push 到运行 GitHub Pages 的仓库,虽然操作不麻烦但未免也太重复枯燥, 而通过 GitHub Actions 可以有效减少重复工作,提高工作效率。
事前准备
首先,明确我们的自动化逻辑:
确定博客源码的获取源
首先要让 GitHub Actions 能够获取博客源码,也就是 Markdown 文件,通常用 GitHub 仓库即可。
另外,有的博主也许并不想直接或间接地暴露 Markdown 源文件…… 虽然没尝试太多,理论上,获取源也可以是其他平台的代码仓库,甚至是自己的 SFTP 服务器。 只要你有能够安全访问它的方式即可,这里为了稳妥,只讲源码存储在 GitHub 仓库的情况。
确定构建时机
如果获取源是 GitHub 仓库,通过 push, pull_request 等操作触发构建则相当容易。
但如果是其他平台的仓库或者SFTP,GitHub Actions 也许不能够及时捕获到源码的变更, 但是通过定时运行 Actions 的方式也可以在一定程度上做到自动化构建·部署。
Note: 当然,也许别的平台也支持类似 GitHub Actions 一样的功能,那直接在该平台创建自动化脚本即可,比如 Huwwei Cloud。
创建 Personal access tokens
下面的脚本中涉及到 commit, push 操作,需要 GitHub 仓库的访问权限, 为了将相应的权限安全地赋予 GitHub Actions,需要用到 Personal access tokens。
选择右上角头像 - Settings - Developer settings - Personal access tokens,
点击 Generate new token

Note 随便填,自己能分清是什么就好。
然后勾选 workflow 和 admin:repo_hook,勾选 workflow 会强制勾选 repo,
所以最终创建的 token 将拥有 repo, workflow 和 admin:repo_hook 权限。

新建 workflow
Note: 至于为什么这里名字变成了 workflow,我也不是很明白。
个人理解是: GitHub Actions 只是 GitHub 提供的这个功能的名字;
这个功能中真正配置、运行的东西叫做 workflow(工作流);
而每个 workflow 中运行的就是经常听到的 job。
感觉有点像 activity 或者说是 BPMN 项目的意思。
通过 GitHub 网页
在 GitHub 仓库页选择 Actions 标签,点击 set up a workflow yourself 新建 workflow。

通过本地手动创建
workflow 其实是在当前仓库当前分支下创建 .github/workflows/ 目录,在该目录下创建 .yml 文件,每个 .yml 文件就是一个 workflow 的配置文件。
Windows 不能直接创建 . 开头的目录/文件,可以参考以下命令:
| |
编写配置文件
以下是根据我的仓库整理的配置文件,可以按需要修改。
Note:
- master 分支运行着 GitHub Pages
- blog 分支存放着 markdown 文件
- blog 分支的
themes/nicesima目录是 submodule,链接到niceRAM/nicesima这个仓库。
| |
至此 workflow 就编写完成了,如果是在网页端编写,最后别忘记点 Start commit 保存配置文件。
主要操作基本都在 steps 里,详细可以参考 官方文档。 在网页端编写时还可以在右侧的 Marketplace 随时搜索需要的 workflow。
测试 workflow
上传一篇文章或随便做点更新并 push,现在打开刚才的 Actions 标签,不出意外就可以看到 workflow runs,
也就是 workflow 的运行记录。
如果 workflow 运行出错,GitHub 还会发邮件通知,所有 runs 都可以查看完整日志和 workflow 配置文件, 对问题定位有很大帮助。