为GitHub构建自我更新配置文件自述文件

2020-07-12 10:49:50

GitHub在过去几天的某个时候悄悄发布了一项新功能:Profile Readme。创建一个与您的GitHub帐户同名的存储库(在我的示例中为github.com/simonw/simonw),向其中添加一个readme.md,GitHub将在您的个人个人资料页面顶部呈现内容-对我而言,这就是github.com/simonw。

我情不自禁地重复使用这篇博客文章中的技巧,并实现了一个GitHub Action来自动更新我的个人资料自述文件。

访问github.com/simonw,您将看到一个由三栏组成的自述文件,其中显示了我最新发布的GitHub项目、我最新的博客条目和我最新的TIL。

我使用build.yml中的GitHub Action完成此操作。它被配置为在每次推入回购时运行,按计划在每小时过后32分钟运行,并在新的WORKFORK_DISPATCH事件上运行,这意味着我可以单击一个手动按钮来按需触发它。

点击GitHub GraphQL API为我的300多个存储库中的每一个检索最新版本。

点击我博客的完整条目Atom提要以检索最新的帖子(使用feed parser Python库)。

点击我的切片网站的Datasette API,运行此SQL查询以返回最新的切片链接。

然后,它将这些不同来源的结果转换为链接的标记列表,并替换自述文件中的注释块,如下所示:

我有很多使用GitHub常规RESTAPI的经验,但是对于这个项目,我决定使用他们更新的GraphQL API。

我想展示我所有项目的最新“版本”。我现在有300多个GitHub存储库,其中只有一部分使用发布功能。

使用REST时,我必须进行300多个API调用才能找出哪些API有发行版。

查询{查看器{存储库(First:100,Privacy:Public){pageInfo{hasNextPage endCursor}Nodes{Name Release(Last:1){totalCount Nodes{name Publishedat url}。

此查询返回我的前100个公共存储库中每个存储库的最新版本(last:1)。

您可以将其粘贴到GitHub GraphQL资源管理器中,以便根据您自己的配置文件运行它。

只有一个问题:分页。我有100多个repo,但他们的GraphQL一次只能返回100个节点。

要进行分页,您需要请求endCursor,然后将其作为下一个请求的After:参数传递。我在这本书里写了如何做到这一点。

我很高兴这是我个人资料自动化的第一次尝试。拥有一个使用GitHub操作自我更新的GitHub个人资料有一种极度饱和的感觉--它感觉很合适。

我可以添加更多的内容:我的tweet,我的侧边栏博客链接,甚至可以从PyPI下载统计数据。我要看看将来有什么能让我喜欢的。

我不确定个人资料页面上显示的自述文件是否有大小限制,因此决定多少信息合适似乎主要取决于个人喜好。

建立这些自动化的个人资料页面相当容易,所以我期待着看看其他书呆子们会想出什么样的东西!