本博客采用GitHub仓库提供的Issue和Actions发布。
Github Issues 本身可以作为一个内容管理的工具,例如借助插件可以将其用于托管博客的评论,它支持Markdown语法,可以粘贴带图,操作上的open和close状态可以对应草稿和发布…非常酷!
How?
这一整个流程,可以简化如下:
我有一个私有仓,
syyani/blog
,我在里面码字我有一个公开仓,
syyani/syyani.github.io
,用来发布 GitHub Pages在私有仓里,我做了一个 sync workflow。只要 Issues 有任何变化,就触发公开仓的另一个 deploy workflow
私有仓yml配置如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22name: Sync posts
on:
issues:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: sync
cancel-in-progress: true
jobs:
sync:
runs-on: ubuntu-latest
steps:
- name: Sync
run: gh workflow run deploy.yml
env:
GH_REPO: SYYANI/SYYANI.github.io
GH_TOKEN: ${{ secrets.DEPLOY_TOKEN }}公开仓的 deploy workflow 作用很简单,就是拉取私有仓的 Issues,生成 posts,然后生成最终 HTML,部署
公开仓的 deploy workflow,大家自己也可以看到:deploy.yml。它的另一个关键是 sync.mjs 这个用来拉取 Issues 并生成 posts 的脚本。
如果你想把这套流程用到你自己的博客,你需要开一个 Personal Access Token[^👇] 分别加到两个仓库的 Secrets 里(名称为
DEPLOY_TOKEN
)。并且对应更改这两个 workflow 里的GH_REPO
变量。[^👇]:首先进入GitHub的设置页面:依次是 Settling -Developer Settling - Personal access tokens - Token(classic) - Generate new token(classic) ,由于只是用来同步仓库,只用给repo权限即可。