jwenjian/ghiblog

基于Github Action自动生成并更新GitHub Issue博客的ReadMe

jwenjian opened this issue · 27 comments

Why

现在很多人, 包括我, 在折腾了一堆个人博客的系统之后, 放弃了花哨的页面效果, 回过头来用Github Issue写博客.

但头疼的一点就是:
如果让其他人直接点到自己仓库的issues页面来看自己的文章的话, 只会看到issue的列表, 没有突出内容, 没有分类, 没有about me, 只有一条条的issue.

如果想解决上述的问题, 就要手动在发布issue之后, 手动更新README, 并且push到仓库, 那么你需要:

  • 一台电脑
  • 安装git
  • clone仓库
  • 修改README
  • push

很麻烦, 感觉慢慢没有了更新的动力 😢

How it works

利用Github Action提供的工作流, 结合GitHub的API来实现:

  1. 通过Github API获取当前仓库的信息, 如
  • 总issue数量
  • 总label数量
  • 每个label下的issues列表
  • 最新更新(创建)的是哪些issue
  1. 将这些信息组装出自己满意的README页面
  2. 更新仓库的README.md文件
  3. 提交README.md的变更到远程仓库, 到这里, 我们的痛点就解决了一半, 剩下就是将步骤1-4在创建issue, 修改issue, 删除issue, 为issue新增label, 从删除label等等的动作之后触发了。
  4. 集成Github Action, 设置触发条件为: on: [issues, issue_comment], 完成!

于是, 你只需要写Issue就好了, 剩下的交给Github Action 🎉

You want too?

如果你也想有一个自动更新的GitHub Issue博客, 那么参考以下步骤:

  1. fork此仓库到你的账号下
  2. 修改 .github/workflow/main.yml 的第 20, 25, 26, 30, 34行内容,具体改成什么你应该懂得。
  3. 在你的仓库中建以下几个label:

这些label目前是必须存在的,所以一定要先创建。

  • :+1:置顶
  • :framed_picture:封面
  • 开源
  1. 创建一个issue试试?

至此, 如果不出意外, 你的ghiblog的自动更新就完成了.

功能说明

置顶

只需要给你的issue打上 :+1:置顶 的标签即可。

封面图片

新建一个issue, 并给这个issue打上 :framed_picture:封面 标签,(最好只给一个issue打上此标签。)
这个issue中的所有评论内容都要遵循下面的格式:

图片
---
标题

如:

![致命女人 00_28_49 20191026-155316](https://user-images.githubusercontent.com/25657798/67616241-0132a080-f809-11e9-8bd9-319b65f6e3f0.png)
---
[ Why Women Kill ]

开源项目展示

这里只适用于展示自己的开源项目, 即自己账号下拥有的开源项目。

新建一个issue并设置label为: 开源, issue的标题为你的开源项目的仓库名称, issue的内容为你的开源项目的介绍。

如我的开源项目: jwenjian/gallery

那么issue的标题为gallery, issue的内容为: 基于Github issue的相册网站

点个赞,太棒了!

点个赞,太棒了!

😄 谢谢 @shenweiyan

@jwenjian

It's cool !!!

想问博主平时都是在本地写好了markdown,再上去Issue 吗?图片这些是怎么维护的呢?

我更喜欢直接在浏览器页面写博客, 图片的话也是直接拖放到issue输入框中, 会自动上传至github并转换成markdown的图片格式, 简单. @liuvigongzuoshi

感谢作者,根据这篇文章尝试了下。但感觉定时任务不算太满足要求,尝试用了github hook可以不用circleCI当有issues推送并判断是否为作者自己写的也能实现这个功能,而且不用每次都生成新的readme,并且能实时的把自己的isuue博客放在readme中

@yihong0618 定时任务确实是有些粗暴 现在已经是基于GitHub action 了 类似于hook的机制 只要有新的issue或者修改了issue等操作 都会触发脚本的执行以及readme的更新

抱歉回复的晚 我一直都收不到github 的通知 很奇怪

@jwenjian
嗯啊,我利用hook也弄了个基于issue的博客,不过是私有的,感谢作者分享。之后我也试试github action.

fydy commented

run python script fail

image

image

@fydy sorry, 有一些没有写的特别清楚,你需要先创建以下几个label:

这些label目前是必须存在的,所以一定要先创建。

  • :+1:置顶
  • :framed_picture:封面

创建完之后再试试

fydy commented

image
image

已经创建了这两个标签,仍然报错,my repo:https://github.com/fydy/isblog

报错信息

@fydy ahhh.. 再建一个label: 开源 😭

fydy commented

@jwenjian 谢谢,运行成功了

@fydy OK, 不过我看现在如果开源的issue只有一个的话, 好像有一点格式问题, 你可以试着再加一个issue, 设置 开源 这个label, 然后再看一下格式

至此, 如果不出意外, 你的ghiblog的自动更新就完成了.

果不其然,出意外了,不是程序员,搞不定😭

至此, 如果不出意外, 你的ghiblog的自动更新就完成了.

果不其然,出意外了,不是程序员,搞不定😭

😂什么错误?

至此, 如果不出意外, 你的ghiblog的自动更新就完成了.

果不其然,出意外了,不是程序员,搞不定😭

😂什么错误?

我是按照you want too那里的步骤一个一个来做的,提交issue之后发现没什么变化,是不是我没运行什么action

  1. 修改了配置文件
  2. 创建了对应的label
  3. 添加了测试的issue
    除了没更新readme,看着都没啥毛病

至此, 如果不出意外, 你的ghiblog的自动更新就完成了.

果不其然,出意外了,不是程序员,搞不定😭

😂什么错误?

我是按照you want too那里的步骤一个一个来做的,提交issue之后发现没什么变化,是不是我没运行什么action

Action 应该是创建 issue 或者 issue comment会自动触发

  1. 修改了配置文件
  2. 创建了对应的label
  3. 添加了测试的issue
    除了没更新readme,看着都没啥毛病

额,我看了你的 repo,好奇怪,为啥action没有运行... 你能贴我一下你的 action 标签页里的截图吗?

@jwenjian
重新fork了一下,发现 首次创建 issue cli 会执行两次,第二次 cli 执行 会冲突
abc

@smileyby 是 fork 之后的首次创建 issue 吗?我刚才创建了一个 issue, action 执行了一次。

image

有个问题,如果issue的body中有代码块,只取150个字符可能存在缺失以代码块结尾的md语法,从而导致后面所有的issue都在这个代码块显示

好的,我找时间看一看,如果150字中间有代码块开始标志,就在最后补一个代码块结束标志。 发自我的iPhone

------------------ 原始邮件 ------------------ 发件人: iamtomas @.> 发送时间: 2021年12月26日 12:53 收件人: jwenjian/ghiblog @.> 抄送: Jiang Wenjian @.>, Mention @.> 主题: Re: [jwenjian/ghiblog] 基于Github Action自动生成并更新GitHub Issue博客的ReadMe (#1) 有个问题,如果issue的body中有代码块,只取150个字符可能存在缺失代码块结尾,会导致后面所有的issue都在这个代码块显示 — Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android. You are receiving this because you were mentioned.Message ID: @.***>

好的

@iamtomas 同步一下代码再试试?

@iamtomas 同步一下代码再试试?

image

上边的问题解决了,另外如果代码块开始的标志后边存在 ---,代码块结束标志也会丢失

嗯,这问题就有点复杂了,如果是这种情况,建议手动添加一个 --- 横线分隔。