使用 Github Action 持续集成工具,自动将博客部署至 GitHub Pages 并且同步至云服务中。
前期准备
我们需要一个能够在本地正常运行的由Hugo搭建的博客。
自动部署至github-pages
- 创建一个 GitHub Pages 仓库。
- 格式必须为 [你的GitHub名称].github.io,示例如图:

仓库一定要选 Pubilic 公开
主干分支的代码被 GitHub Action 用来构建站点, GitHub Action 会自动生成gh-pages分支,并且构建博客最终显示的静态站点内容。 gh-pages的分支才是我们网页显示的内容,我们可以在
[你的GitHub名称].github.io看到你的博客内容。- 如果我们的博客主题是通过
git pull到themes/*文件夹下的我们需要添加.gitmodules文件来标注Git子模块,示例如图:

- 配置GitHub Action 工作流
在仓库根目录创建工作流配置文件,路径为:
.github\workflows\gh-pages.yml,配置如下:
如果你的主干分支主干分支不是master 是 main 需要将配置的
refs/heads/mai修改为refs/heads/master设置完成后把本地仓库push至github就会可以自动运行 GitHub Action 啦。
如果脚本运行失败,并且你并没有用到
.gitmodules这步操作可以试图删除actions/checkout@v3这一段配置后再push一遍代码看看。配置中的
GITHUBTOKEN你可以把它认为是一个变量,我们需要在仓库的 settings 里找到 Secrets 下的 Actions 然后点击 New repository secret 生成一个名字叫GITHUBTOKEN的变量。

自动部署至服务器
如果你并且还需要将代码同步至服务器,其实逻辑很简单,我们只需要先在服务器中将仓库 git clone 到服务器然后将分支切换至
gh-pages, 每次触发 Git Action 时追加一个连接ssh至服务器,进入到站点目录执行 git pull 的操作就可以, 配置如下:
HOST: 服务器IP地址USERNAME: ssh用户名PASSWORD: 用户密码PORT: ssh端口SITEPATH: 站点目录,绝对路径。这些变量直接在
repository secret中设置就可以了。