Skip to content

About

All in Github 使用 Github Issues 作为博客的内容管理系统,配合 Github Actions 实现自动化的博客生成与部署。

如何使用

[!IMPORTANT] 请严格按照步骤进行项目设置。

Fork 项目

在复刻的项目中,Github workflows 和 Isuues 默认关闭,您需要显示开启它们。

项目配置

创建 PAT

Personal access tokens(简称 PAT),用于在构建阶段,根据评论生成静态博客内容并提交到主分支时,触发部署 Github Page Workflow。

打开 Fine-grained tokens 页面,创建一个具有最小权限的 token,设置如下:

创建完成后,复制保存生成的 token。

创建项目环境变量

打开项目 Settings -> Secrets and variables -> Actions,创建一个 Repository secrets,其中:

创建 Github 标签

创建 Issues 标签(labels):NoteBlogPublishing

创建 Github Issue

首先创建一个 Issue,描述可不填,设置 Note 标签。创建一条评论会自动触发 Github workflows,等待执行完成后,请查看你的 Github Page 主页 yourname.github.io/all-in-github(指定了子路径)。

评论内容示例:

<!-- tags: blog -->
<!-- title: 文章测试 -->
<!-- description: 文章测试 -->

First blog test

开启 Github Pages

打开项目 Settings -> Pages -> Build and deployment,开启 Pages,设置如下:

执行上述操作,等待部署 Workflow 执行完成后,打开 https://yourname.github.io/all-in-github 查看你的博客。

实现原理

在 Github Issues 中,系统依赖两个关键标签:NoteBlog。 凡是带有这两个标签的 Issue 评论都会被收集并生成对应的博客内容。

当指定动作(比如创建/编辑评论)发生时,将触发 Github Workflows:

  1. 构建阶段:根据评论生成静态博客内容。
  2. 部署阶段:触发 Github Pages Workflow,将内容发布上线。

其中,Note 与 Blog 标签在系统中被视为分类(category),但在应用场景和触发时机上有所区别。

具有 Note 标签的 Issues:

具有 Blog 标签的 Issues:

静态站点使用开源 Astro 博客模版 AstroPaper 作为基础,我们进行了一些修改使其适合部署到 Github Pages。

AstroPaper is a minimal, accessible and SEO-friendly blog theme built with Astro and Tailwind CSS.

注意事项

具有 Note 标签的 Issues 本质上是一个分类,由于每条评论都是一条博客文章,所以无法使用 issue 标题作为博客标题。

此系统使用 HTML 注释作为标识,makeNote 负责解析。您可以在评论中分别插入博客标题、标签和描述注释,作为 HTML 注释,它们不会在博客中展示:

项目结构

.
├── .github
├── actions
├── blog (Astro blog)
├── LICENSE
├── package.json
└── README.md

主仓库存放 GitHub Actions 配置和 Astro blog,此项目使用 git-subtree 单独维护 Astro blog Git 项目。

Astro blog 是一个开源项目,使用 git-subtree 即可以保留来自上游的更新(pull upstream),又可以让 Github Actions 操作这个子目录(在 blog 文件夹创建博客文件)。