Repository-Webhooks 与 Github 应用程序 - 使用哪个?

Repository-Webhooks vs Github Apps - which to use?

用例:我当前的用例是对新问题和 post 自动评论做出反应。这主要是特定于一个或两个存储库。

所以我猜webhooks on a repository as well as Github Apps可以用。尽管 Github 对两者都有一些非常好的文档,但我不确定在我的场景中使用哪一个。

他们比较起来有什么优势/劣势?

主要区别在于 webhook 生成事件并将它们发送到给定的 URL Github。应用程序有权根据您授予的权限访问您安装它们的存储库。

如果您有一个每次更新问题时都会触发的 webhook,您将在您指定的 URL 收到一个事件,但您将没有任何权利,例如在 Github 中修改该问题(例如通过 API 调用)。

如果您在存储库中安装了 Github 应用程序并在应用程序设置中设置了 webhook URL,则事件也会发送到 URL。但是,区别在于:在 webhook URL 后面,您可能会有一项服务使用 Github 应用程序凭据(私钥或临时令牌)对您的 Github 存储库进行一些修改。

一个例子:

  • Webhook -> 记录拉取请求更改
  • Github 应用 -> 自动标记新拉取请求

What else?

您还可以使用 GitHub Actions. For your use case, there is the issues 事件(实际上是一个 webhook)。它有几种 activity 类型,包括 opened:

on:
  issues:
    types: opened

此工作流仅在创建问题时运行。之后,您可以使用 REST API (e.g. via curl) to GET the newest issue and POST a comment.

正如您所说,这仅与“一个或两个存储库”相关,我认为只需复制并粘贴该工作流程就可以了。如果回购数量增加,您可能需要 create a dedicated action.

说到自定义操作,还有一个现有的 Auto Comment action:

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.