跳转到主内容

GitHub 免费部署静态博客之自动部署

使用 Hugo + GitHub Actions 自动构建部署静态博客到 GitHub Pages

前言

使用 Hugo + Mana 主题做静态网站博客,上传到公网,无需服务器搭建自己的博客,方便无论何时何地只要有网就能更新。

主要原理:GitHub 新建一个私有仓库存放源码,利用 Actions 自动构建静态网站,推送 public 文件夹到公有仓库。众所周知,本地 push 静态网站到任意公共服务器,别人就能浏览我们的网站。但前提是静态网站如何生成?我们暂且不考虑如何搭建静态网站,因为构建静态网站的工具太多了,不用工具手搓 .html 文件也行。所以这里主要是记录我自己的搭建过程。

参考视频: B站教程

参考文章: 使用 GitHub Actions 部署 Hugo 博客


1. 准备工作

  • 已安装 Git(用于推送到 GitHub 仓库)
  • Hugo 静态网站项目(需设置为公有仓库域名或自定义域名)

2. 部署步骤

2.1 创建私有仓库

命名为 hugo-site(或任意名称)。

git add .
git commit -m "初始提交"
git push

推送整个源代码到私有仓库。

推送代码

推送完成后,私有仓库显示源代码项目。

2.2 创建公有仓库

命名为 hugo-public

创建公有仓库

2.3 创建 Token

点击头像 → SettingsDeveloper SettingsPersonal access tokensTokens (classic)Generate new token (classic)

创建 Token

  • Note 命名:hugo-auto-deploy
  • 勾选 repo 权限
  • 点击 Generate token

Token 设置

⚠️ 重点:保存 token 字符串!它只会显示一次。

2.4 私有仓库创建 Token 变量

回到私有仓库 hugo-siteSettingsSecrets and variablesActionsNew repository secret

  • Name: HUGO_TOKEN
  • Value: 粘贴刚才保存的 token

创建变量

到此,已设置:

项目 说明
私有仓库 hugo-site(存放源码)
公有仓库 hugo-public(存放构建后的静态文件)
Token 变量 HUGO_TOKEN(写入公有仓库的权限)

默认 Hugo 静态网站域名已设置为 https://{GitHub用户名}.github.io/hugo-public/


3. 设置 Actions

目的:每次 push 到私有仓库,都自动构建生成 public 文件夹并推送到公有仓库。

在 Hugo 项目内新建文件 .github/workflows/hugo_deploy.yaml

创建工作流

name: deploy

# 代码提交到 main 分支时触发 GitHub Action
on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-24.04
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

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

      - name: Build Web
        run: hugo -D

      - name: Deploy Web
        uses: peaceiris/actions-gh-pages@v4
        with:
          PERSONAL_TOKEN: ${{ secrets.HUGO_TOKEN }}
          EXTERNAL_REPOSITORY: 你的用户名/你的公有仓库名
          PUBLISH_BRANCH: main
          PUBLISH_DIR: ./public
          commit_message: auto deploy

只需修改底部两行:

  • EXTERNAL_REPOSITORY:改为你的用户名和公有仓库名
  • secrets. 后的变量名:改为你设置的名称(如 HUGO_TOKEN

修改配置

然后重新 push 到私有仓库。

验证是否成功

方法一: 查看私有仓库的 Actions 标签页,显示绿色勾即成功。

Actions 成功

方法二: 刷新公有仓库,查看是否有文件被推送过来。

公有仓库有文件


4. 创建 Pages

在公有仓库 hugo-public 中启用 GitHub Pages:

启用 Pages

  • Source: Deploy from a branch
  • Branch: main/ (root)

设置完成后,页面会显示:

Your site live at https://{你的用户名}.github.io/hugo-public/

打开这个网址,就能浏览你的博客了!


5. 自定义域名(可选)

如果你想绑定自己的域名:

  1. 在 Pages 设置页的 Custom domain 输入你的域名 → Save
  2. 在你的域名 DNS 管理后台添加解析记录:
记录类型 主机记录
A @ 185.199.108.153
A @ 185.199.109.153
A @ 185.199.110.153
A @ 185.199.111.153
CNAME www 你的用户名.github.io

GitHub 会自动申请 HTTPS 证书,等待几分钟即可生效。


6. 总结与注意事项

  1. 域名设置:项目需要提前设置好 baseURL 为公有仓库网址(或自定义域名)
  2. Token 保存:Token 只显示一次,务必复制保存;如果丢失可以重新生成
  3. Action 更新:YAML 文件配置可能会随官方更新而变更,留意 GitHub 官方提醒并及时修改
  4. 触发分支:确保 YAML 中的分支名(branches)与你的仓库默认分支一致(mainmaster