本文用于参考其他教程,给出完整步骤完整复现,细节省略。 [TOC]
安装
- 安装hugo
- 创建GitHub Page仓库,用于展示站点内容
- 创建blog源文件托管私有仓库
- 创建站点
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
- 自定义站点内容 参考教程
- 修改hugo.toml
注意原文中是yml最好转换下,主要修改网页图标、菜单、标题等内容 图标维护为在static目录下
- 配置归档
- 配置搜索
- 配置关于
- 配置评论
这里与原文不同,直接复制giscus生成脚本内容复制进blog_source\layouts\partials\comment.html即可
- 配置数学公式
- 配置代码字体
创建文件 hugo new posts/first.md
hugo server -D本地启动预览
部署Github Pages
采用两个仓库,一个维护源文件一个发布public方式。
- 生成Actions secrets
- blog_source仓库配置Actions secrets,主要是存储敏感信息,仅暴露名称来被外界引用。
- 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中也要设置构建分支