前言
hugo 配合 github action 实现自动化部署,例如将 hugo 源码推送到 github 仓库,通过 github 服务器的 hugo 服务生成静态文件,最后自动发布到 main 分支。
实操
github 创建 source 分支用来存放源码,然后在本地 git 仓库新建 .github/workflows
目录,文件名不能改变,这是 github action 默认识别路径。

在该目录下创建 任意名称.yaml
,内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| name: Deploy Hugo to GitHub Pages
on:
push:
branches: [ source ] # 仅监控source分支的推送
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: 监测 source 分支
uses: actions/checkout@v4
with:
ref: source # 明确检出source分支
- name: hugo 设置
uses: peaceiris/actions-hugo@v2
with:
hugo-version: '0.125.7' # 指定Hugo版本
extended: true # 启用扩展版
- name: 删除符号链接
run: rm -f /home/runner/work/hugo/hugo/static/_resources
- name: 复制图片
run: cp -r //home/runner/work/hugo/hugo/static/00-assets/ /home/runner/work/hugo/hugo/static/_resources
- name: hugo 生成静态文件
run: hugo --minify --gc
- name: 发布到 main 分支
uses: peaceiris/actions-gh-pages@v4
with:
deploy_key: ${{ secrets.SSH_PRIVATE_KEY }}
publish_dir: ./public
publish_branch: main # 正确参数名称
force_orphan: true # 强制覆盖目标分支
env:
# 配置 Git 用户信息
GIT_USER_NAME: "root"
GIT_USER_EMAIL: "root@localhost"
|
- runs-on 指定环境,可以指定 windows、ubuntu 以及 macos
- on 为事件,自动执行脚本的事件,这里为 push 自动触发脚本
- name 为注释
- uses 为使用模块,这里加载了
actions/checkout@v4
、peaceiris/actions-hugo@v2
等待模块 - run 为执行命令,这里为 ubuntu 环境,所以都是 ubuntu 命令
${{ secrets.SSH_PRIVATE_KEY }}
为变量名,我是通过 ssh 方式推送到 main 分支,用到 peaceiris/actions-gh-pages@v4
模块,其他为官方默认配置,不必理会
将本地 git 公钥和私钥配置到 github,我这里默认已经配置好公钥,只需要将私钥配置到 action 即可
要想 github action 识别 ${{ secrets.SSH_PRIVATE_KEY }}
变量,需要手动配置,找到 Settings

注意变量名要一致,我这里为 SSH_PRIVATE_KEY
,用的时候是 ${{ secrets.SSH_PRIVATE_KEY }}

将 git 仓库推送到 github source 分支即可自动构建,点击进去,即可排查错误
