Hugo配置Github Actions

最近把博客的构建工具从 Hexo 换成了 Hugo,感觉 Hugo 配置和使用起来更简洁方便。

由于我的博客总体来说有两个仓库,一个私有仓库是放置建站工具的目录,其中包含博客 Markdown 内容、一些配置还有主题;另一个就是通过 GitHub Pages 来访问公共仓库。为了方便,之前在使用 Hexo 的使用使用了 Github Actions 来一键部署博客,换成 Hugo 后这个 actions 需要修改一下。

.github/workflows/hugo.yml

 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
name: GitHub Pages

on:
  push:
    branches:
      - master # 监听 master 分支的推送事件
  pull_request:

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          submodules: true # 拉取 Hugo 主题子模块
          fetch-depth: 0 # 获取完整提交历史

      - name: Setup Hugo
        uses: peaceiris/actions-hugo@v2
        with:
          hugo-version: "0.126.2"
          extended: true

      - name: Build
        run: hugo --minify # 启用压缩优化

      - name: Deploy
        uses: peaceiris/actions-gh-pages@v3
        with:
          personal_token: ${{ secrets.ACCESS_TOKEN }} # 仓库访问令牌
          external_repository: kerolt/kerolt.github.io # 发布的仓库地址
          PUBLISH_BRANCH: master # 部署分支
          PUBLISH_DIR: ./public # Hugo 输出目录

关键点说明:

  1. 子模块处理
    submodules: true,确保能正确拉取 Hugo 主题(因为我的博客主题是通过 git submodule 添加的)
  2. Hugo 扩展版
    extended: true ,因为大多数 Hugo 主题需要 Sass/SCSS 支持
  3. 安全凭证
    通过 secrets.ACCESS_TOKEN 实现安全部署,需要在 Repo Settings → Secrets 中添加一个具有 repo 权限的 Personal Access Token
  4. 双仓库模式
    使用 external_repository 将构建结果发布到独立的 GitHub Pages 仓库,实现源码与部署分离
使用 Hugo 构建
主题 StackJimmy 设计