Yang


使用 github issue 系统作为个人博客暨本博客源码分享

Post on: 2024-12-12 11:38:28

TLDR: 仓库 https://github.com/notzhan/blog

Why

本 blog 旧的构建流程为 编写 Markdown 文件 - 使用 Bash 和 Pandoc 生成静态 HTML - 用 Caddy 发布静态页面,处理 TLS 等

旧流程的优势:

  • 静态文件存储在本地,容量无限制

  • 实时修改、发布

旧流程的缺陷 (新方案解决的问题)

  • 使用 443 端口发布博客,需要有可以有公网 443 端口的云服务器作转发, 如果该服务器故障,则博客无法访问

  • 本地服务器也可能关机、重启、维护等,会导致博客无法访问

  • 使用 vim 等编辑本地 markdown、调用 bash 脚本,依赖电脑环境,无法方便使用手机编辑、修改博客内容

新方案的优势

  • 所有除外部图片链接的数据保存在 github,并且使用 github page 发布

  • 可以使用 Github 手机 APP 编辑 markdown、issue

  • 无需使用 shell 环境构建静态页面

  • 使用简单,如无特别的自定义样式、发布静态页面的需求,只需要使用一个文件即可 (.github/workflows/issue_to_readme.yaml),发布博客只需要创建 issue 即可

  • github issue 本身支持图片上传、markdown 预览、评论、以及链接到其他 issue 等功能

使用步骤

  1. Fork 本仓库,或者 下载,上传到你的仓库, 并且在 action 中启用 workflows,github 默认会禁用 fork 的仓库中的 workflows.

  2. 删除 post_issuespost_sources 中的所有文件, 并且 务必修改 about.md 文件,这里是我的信息

PS: 如果只需要使用 github 仓库作为博客系统,不需要静态页面托管、自定义 css 等,可以删除本项目除 .github/workflows/issue_to_readme.yamlLICENSE 文件外的所有文件, 即使用 issues 系统作为博客,仅需这一个 action 文件即可。

  1. 这里 申请 API token,设置 token 的有效期、权限等,只需要配置针对博客仓库的 issue 读权限、commit、push 权限即可,建议使用 Fine-grained token,可以细粒度的控制 token 权限

  2. Setting - Code and automation - Action - General - Workflow permissions - Read and write permissions, 如图

  1. Setting - Code and automation - Pages - Build and deployment - Source - Github Actions,如图

  1. 在博客仓库的 settings - secrets - actions 中,创建一个名为 G_T 的 secret,值为上一步申请的 token

  2. 在第四步同样的位置,创建两个 variables, 名称分别为 BASE_URLBLOG_TITLE, 值为需要生成的 README.md 中的 H1 内容, 比如 “XXX BLOG

  3. 完成,在你的博客仓库中,创建一个 issue,issue 标题为博客文章标题,内容为文章正文,创建 issue 之后,会自动生成 post_issues 下的 markdown 文件,同时更新仓库的 README.md 文件作为博客索引

静态页面生成

如果还需要使用本项目生成静态 html 页面,定制 css 等,可以按照需要修改本仓库中 static, css, pandoc 目录中的所有样式、模板 、图标等文件。

自定义域名

  1. 在博客仓库的 Setting - Page - Custom domain 中,填入你的域名,如 www.yourblogdomain.com

  2. 在你的 DNS 服务商配置中,增加一个 CNAME,名称为 www.yourblogdomain.com, 值为 yourgithubusername.github.io, 切记, 这里唯一需要修改的是你的 github 用户名和域名,不要在 yourgithubusername.github.io 后加任何仓库名称等内容.

  3. 访问 yourgithubusername.github.io


我按照你的此 issue的内容,设置好了。创建了博客https://briteming.github.io/nb/ ,怎么里面没有我新建的帖子出现呢?我明明已经提交了issue: https://github.com/briteming/nb/issues 谢谢回复

我在你的仓库的 actions 中没看到 Generate README 运行过.

  1. 请查看仓库是不是启用了 actions,github fork 的仓库默认不会启用上游仓库中的 workflows,请在 Actions 页面启用;
  2. 确认一下 token 的权限,以及 “Setting - Code and automation - Action - General - Workflow permissions - Read and write permissions” 是不是设置正确.
  3. 建议删除掉本仓库中的 post_sources 中的文件