blog

实现基于 Github Issues 的博客

Author: ninehills
Labels: blog
Created: 2023-06-28T03:31:43Z
Link and comments: https://github.com/ninehills/blog/issues/100

之前参考了一些基于 GitHub Issues 的博客,基本分为两种:

  1. 使用 Javascripts 动态生成博客页面。缺点是对 SEO 不友好,而且加载速度较慢。
  2. 抓取 issue 然后用 hugo 之类的生成静态站点。找到两三个均过于复杂,且长时间不维护已经无法运行。

所以自己简单实现了一个,基本流程如下:

  1. 创建、编辑 Issue。
  2. 触发 Github Action。
  3. 拉取代码。
  4. 使用 gh(Github CLI)获取全部 issue 以及 issue 内容,过滤指定 label,然后生成 Markdown 格式的目录和文章。参考 generate.py
  5. 创建 Pull request 到代码库。
  6. 人工 Merge 后,Github 会自动使用 Jekyll 渲染 Markdown 并发布 Github Pages。

具体的 Github Action 配置如下:main.yml

在第5步,也可以将创建 Pull request 修改为直接 Push,但考虑到人工 Review 可以避免不合理的提交,最终选择了发 Pull request。