实现基于 Github Issues 的博客
Author: ninehills
Labels: blog
Created: 2023-06-28T03:31:43Z
Link and comments: https://github.com/ninehills/blog/issues/100
之前参考了一些基于 GitHub Issues 的博客,基本分为两种:
- 使用 Javascripts 动态生成博客页面。缺点是对 SEO 不友好,而且加载速度较慢。
- 抓取 issue 然后用 hugo 之类的生成静态站点。找到两三个均过于复杂,且长时间不维护已经无法运行。
所以自己简单实现了一个,基本流程如下:
- 创建、编辑 Issue。
- 触发 Github Action。
- 拉取代码。
- 使用 gh(Github CLI)获取全部 issue 以及 issue 内容,过滤指定 label,然后生成 Markdown 格式的目录和文章。参考 generate.py。
- 创建 Pull request 到代码库。
- 人工 Merge 后,Github 会自动使用 Jekyll 渲染 Markdown 并发布 Github Pages。
具体的 Github Action 配置如下:main.yml
在第5步,也可以将创建 Pull request 修改为直接 Push,但考虑到人工 Review 可以避免不合理的提交,最终选择了发 Pull request。