使用 Github Actions 自动部署 Hugo
回应痛点
- 写作所用的设备不带环境
没有, 必须换回原来用的设备, hugo
- 只想好好写东西
不想再管我的终端/命令行,
本文假设你已经在本地拥有一个用push
username/username.github.io
1. 把源仓库传到一个新库 #
整体上传到一个新库后clone
.md
content/posts
push
在这里我们使用
- 点击菜单栏
选择, 。 - 为了避免文件夹识别的混乱
在设置, 可以新建一个文件夹, 之后再将博客系统文件, ( config.toml
复制进来) 。 - 复制后
回到, 填写, Commit to main, 然后, 。
2. 将新库和 Github Pages 仓库串起来
#
在username/username.github.io
public
cd public
.md
网页版
-
边栏最下方
, - 选择
- 点击右方
- 点击右方
- 选择
-
输入密码后进入设置
在, 如, Deploy
有效期, Expiration( 建议选择永不过期) No expiration( 访问范围) , Scopes( 我们需要选中) -
点击生成后
注意它只会出现这唯一的一次, 将其复制保存下来,
得到
- 选择
在右侧选择, - 在
PERSONAL_TOKEN
- 在
点击,
3. 设置好 Github Actions
#
接下来我们进入源仓库的
- 重命名
.yml
如, deploy.yml
- 修改编辑框内容如下
:
name: deploy
# 这个 action 的名字
on:
push:
# 代表每次 push 都会 turn on action
workflow_dispatch:
# 代表我们也可以手动 turn on
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v2
with:
submodules: true
fetch-depth: 0
- name: setup
uses: peaceiris/actions-hugo@v2.6.0
with:
hugo-version: "latest"
extended: true
# 按需选择是否使用 hugo-extended
- name: build
run: hugo
- name: deploy
uses: peaceiris/actions-gh-pages@v3
with:
PERSONAL_TOKEN: ${{ secrets.PERSONAL_TOKEN }}
# 生成的 token 就用在这里,因为下面用到 external repository
EXTERNAL_REPOSITORY: username/username.github.io
# 修改为你的 Github Pages 仓库
PUBLISH_BRANCH: main
# 以及对应的分支 main/master
PUBLISH_DIR: ./public
# 指定将自动部署得到的 public 文件夹 push 上去
commit_message: ${{ github.event.head_commit.message }}
若点击保存
4. 如果你还希望刷新 Cloudflare 缓存 #
我还使用posts
以后者为例deploy
- name: Purge cache
uses: nathanvaughn/actions-cloudflare-purge@master
with:
cf_zone: ${{ secrets.CLOUDFLARE_ZONE }}
cf_auth: ${{ secrets.CLOUDFLARE_AUTH_KEY }}
files: |
https://fanrongbin.com/posts/index.html
https://fanrongbin.com/index.html
https://fanrongbin.com/main.css
需要新增两个secret
CLOUDFLARE_ZONE
在: 即, Zone ID
区域( ) CLOUDFLARE_AUTH_KEY
在: 具体可以参考,
Login via Github