仓库 Webhooks 和 Github 应用程序 - 应该使用哪个?

6

使用场景: 我当前的使用场景是对新问题做出反应并自动发布评论。这主要适用于一个或两个存储库。

因此,我认为可以在存储库上使用 Webhooks 以及Github应用程序。尽管Github在两者方面都有非常好的文档,但我不确定在我的情况下该使用哪个。

相比之下,它们有什么优缺点?

  • Github应用程序的一个优点是根据此答案,它们不需要向存储库添加WebHook。- 不确定为什么这是一个优点。
  • 显然,GitHub应用程序可以安装在不同的存储库中,并且还可以在市场上发布。但是,我也可以将相同的URL用于不同的存储库中的Webhooks,并因此在某种程度上模仿具有存储库Webhooks的行为。
  • 还有什么其他的吗?
2个回答

5
主要的区别在于,Webhooks 生成事件并将其发送到给定的 URL Github。应用程序有权访问您安装它们的存储库,基于您授予它们的权限。
如果您有一个 Webhook 每次问题更新时触发,您将收到在指定的 URL 上接收到一个事件,但是您将不能通过 API 调用修改该问题在 Github 中的内容(例如)。
相反,如果您在存储库中安装了 Github 应用程序,并在应用程序设置中设置 Webhook URL,则事件也将被发送到该 URL。然而,这里的区别在于:在 Webhook URL 后面,您可能会有一个使用 Github 应用程序凭据(私钥或临时令牌)对您的 Github 存储库进行一些修改的服务。
例如:
- Webhook -> 记录拉取请求更改 - Github 应用程序 -> 自动标记新的拉取请求

1

还有什么别的?

你也可以使用GitHub Actions。对于你的用例,有issues事件(实际上是一个webhook)。它有几种活动类型,包括opened

on:
  issues:
    types: opened

此工作流仅在创建问题时运行。之后,您可以使用REST API(例如通过curl)GET获取最新问题POST评论

由于您说这仅与“一个或两个存储库”相关,因此我认为只需复制并粘贴该工作流即可。如果存储库的数量增加,则可能需要创建专用操作

说到自定义操作,还有一个现有的自动评论操作

on: issues
jobs:
  run:
    runs-on: ubuntu-latest
    steps:
      - uses: bubkoo/auto-comment@v1
        with:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          issuesOpened: >
            Your issue comment goes here.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接