本文用于参考其他教程,给出完整步骤完整复现,细节省略。 [TOC]

安装

  1. 安装hugo
  2. 创建GitHub Page仓库,用于展示站点内容
  3. 创建blog源文件托管私有仓库
  4. 创建站点
 1#a.创建站点
 2hugo new site blog_source
 3
 4#b.下载主题
 5git submodule add --depth=1 https://github.com/adityatelange/hugo-PaperMod.git themes/PaperMod
 6git submodule update --init --recursive
 7git submodule update --remote --merge
 8
 9#c.修改hugo.toml指定主题
10theme = ["PaperMod"]
11
12#d.绑定远程仓库提交代码
13git init
14git remote add  origin git@github.com:lzcook/blog_source.git  
15git checkout -b main
16git add .
17git commit -m 'init'
18git push --set-upstream origin main -f
  1. 自定义站点内容 参考教程
  • 修改hugo.toml

注意原文中是yml最好转换下,主要修改网页图标、菜单、标题等内容 图标维护为在static目录下

  • 配置归档
  • 配置搜索
  • 配置关于
  • 配置评论

这里与原文不同,直接复制giscus生成脚本内容复制进blog_source\layouts\partials\comment.html即可

  • 配置数学公式
  • 配置代码字体
  1. 创建文件 hugo new posts/first.md

  2. hugo server -D本地启动预览

部署Github Pages

采用两个仓库,一个维护源文件一个发布public方式。

  1. 生成Actions secrets
  2. blog_source仓库配置Actions secrets,主要是存储敏感信息,仅暴露名称来被外界引用。
  3. blog_source仓库新增.github/workflows/gh-pages.yml文件,用于blog_source仓库push代码后自动推送部署到page仓库
 1name: github pages # 名字自取
 2
 3on:
 4  push:
 5    branches:
 6      - main  # 这里的意思是当blog_source/main分支发生push的时候,运行下面的jobs
 7
 8jobs:
 9  deploy: # 任务名自取
10    runs-on: ubuntu-latest    # 在什么环境运行任务
11    steps:
12      - uses: actions/checkout@v2    # 引用actions/checkout这个action,与所在的github仓库同名
13        with:
14          submodules: true  # Fetch Hugo themes (true OR recursive) 获取submodule主题
15          fetch-depth: 0    # Fetch all history for .GitInfo and .Lastmod
16
17      - name: Setup Hugo    # 步骤名自取
18        uses: peaceiris/actions-hugo@v2    # hugo官方提供的action,用于在任务环境中获取hugo
19        with:
20          hugo-version: 'latest'    # 获取最新版本的hugo
21          # extended: true
22
23      - name: Build
24        run: hugo --minify    # 使用hugo构建静态网页
25
26      - name: Deploy
27        uses: peaceiris/actions-gh-pages@v3    # 一个自动发布github pages的action
28        with:
29          # github_token: ${{ secrets.GITHUB_TOKEN }} 该项适用于发布到源码相同repo的情况,不能用于发布到其他repo
30          external_repository: lzcook/lzcook.github.io    # 发布到哪个repo
31          personal_token: ${{ secrets.FOR_BLOG }}    #FOR_BLOG为Actions secrets名称
32          publish_dir: ./public    # 注意这里指的是要发布哪个文件夹的内容,而不是指发布到目的仓库的什么位置,因为hugo默认生成静态网页到public文件夹,所以这里发布public文件夹里的内容
33          publish_branch: main    # 发布到Github Pages仓库的branch, 注意在仓库的Setttings/Pages中也要设置构建分支