上一篇文章说了,我不喜欢用 Jekyll 写博客。具体来说,我不喜欢在代码仓里码字。我觉得这么做很奇怪,感觉我需要正襟危坐打开 VSCode,准备各种图片素材,git commit
,git push
…
那这次重开的博客,怎么解决这个问题呢?简而言之,Issues 和 Actions。
GitHub Issues 本身就可以充当一个内容管理系统。你想想:它支持 Markdown,它的 open 和 closed 状态正好可以对应草稿和发布,它的 labels 就是 tags…它甚至可以粘贴带图!
How?
这一整个流程,可以简化如下:
我有一个私有仓,
xingrz/blog
,我在里面码字我有一个公开仓,
xingrz/xingrz.github.io
,用来发布 GitHub Pages在私有仓里,我做了一个 sync workflow。只要 Issues 有任何变化,就触发公开仓的另一个 deploy workflow
公开仓的 deploy workflow 作用很简单,就是拉取私有仓的 Issues,生成 posts,然后生成最终 HTML,部署
公开仓的 deploy workflow,大家自己也可以看到:deploy.yml。它的另一个关键是 sync.mjs 这个用来拉取 Issues 并生成 posts 的脚本。
私有仓的 sync workflow 如下:
1 | name: Sync posts |
如果你想把这套流程用到你自己的博客,你需要开一个 Personal Access Token 分别加到两个仓库的 Secrets 里(名称为 DEPLOY_TOKEN
)。并且对应更改这两个 workflow 里的 GH_REPO
变量。
挖坑
基于 Actions,可以有更多玩法,比如:
- 自动发一条 Telegram channel 广播
- 调用 Puppeteer 生成长截图
- …
以后再说吧。
结语
好了,这篇分享就到这里。主要就是想试试真正用这个流程发一篇文章而已。