之前博客发布是使用本地运行 deploy.sh 的方式,脚本可见 deploy.sh,这种方式每次发布都重新生成 public 文件夹,需要重新进行 git 初始化操作,导致远端 github 仓库永远只有一次 commit,看不到变更操作。所以决定修改为由 github action 在 push 代码时触发 hugo 来构建 github page。
触发 github action 需要在项目根目录下新建 .github/workflows 文件夹,并新建一个 .yml 结尾的文件,内容参考 actions-hugo。如果源 md 文件和打包出的 html 静态文件使用同一个 repo 的话,就会导致每次 push 都需要加 -f。为了避免这种操作可以设置两个 repo,一个存源 md 文件另一个存打包出来的,这就需要使用 action-gh-pages,并设置 external_repository deploy_key 。
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
|
name: CI
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v2.3.4
with:
submodules: true
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2.4.13
with:
hugo-version: "0.80.0"
extended: true
- name: Build
run: hugo
- name: Deploy
uses: peaceiris/actions-gh-pages@v3.8.0
with:
deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }}
external_repository: username/username.github.io
publish_branch: master
publish_dir: ./public
|
sub modules
项目根目录下需要有一个 .gitmodules 文件,内容为
1
2
3
4
5
6
7
|
[submodule "themes/even"]
path = themes/even
url = https://github.com/olOwOlo/hugo-theme-even.git
[submodule "public"]
path = public
url = https://github.com/username/username.github.io.git
branch = master
|
tips
之前使用 even 主题的时候,本地有对源代码进行修改,但是如果直接链接作者的源 git 仓库会发现自己的修改是没有用的。于是 fork 了一份,并将 .gitmodules 中的 themes/even submodule 的 url 修改为自己 fork 后仓库的 url,发现可以生效~
参考