最近把博客的构建工具从Hexo换成了Hugo,感觉Hugo配置和使用起来更简洁方便。
由于我的博客总体来说有两个仓库,一个私有仓库是放置建站工具的目录,其中包含博客 Markdown 内容、一些配置还有主题;另一个就是通过 GitHub Pages 来访问公共仓库。为了方便,之前在使用 Hexo 的使用使用了 Github Actions 来一键部署博客,换成 Hugo 后这个 actions 需要修改一下。
.github/workflows/hugo.yml:
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 输出目录
关键点说明:
- 子模块处理
submodules: true
,确保能正确拉取 Hugo 主题(因为我的博客主题是通过 git submodule 添加的) - Hugo 扩展版
extended: true
,因为大多数 Hugo 主题需要 Sass/SCSS 支持 - 安全凭证
通过secrets.ACCESS_TOKEN
实现安全部署,需要在 Repo Settings → Secrets 中添加一个具有 repo 权限的 Personal Access Token - 双仓库模式
使用external_repository
将构建结果发布到独立的 GitHub Pages 仓库,实现源码与部署分离