Repository-Webhooks 与 Github 应用程序 - 使用哪个?
Repository-Webhooks vs Github Apps - which to use?
用例:我当前的用例是对新问题和 post 自动评论做出反应。这主要是特定于一个或两个存储库。
所以我猜webhooks on a repository as well as Github Apps可以用。尽管 Github 对两者都有一些非常好的文档,但我不确定在我的场景中使用哪一个。
他们比较起来有什么优势/劣势?
- Github 应用程序的一个优点是它们不需要根据此 answer 添加 WebHook 到存储库。 - 不确定为什么这是一个优势。
- 显然,GitHub 应用程序可以安装在不同的存储库中,也可以在市场上发布。但我也可以对不同存储库中的 Webhooks 使用相同的 URL,从而在一定程度上模仿 repository-webhooks 的行为。
- 还有什么?
主要区别在于 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.
用例:我当前的用例是对新问题和 post 自动评论做出反应。这主要是特定于一个或两个存储库。
所以我猜webhooks on a repository as well as Github Apps可以用。尽管 Github 对两者都有一些非常好的文档,但我不确定在我的场景中使用哪一个。
他们比较起来有什么优势/劣势?
- Github 应用程序的一个优点是它们不需要根据此 answer 添加 WebHook 到存储库。 - 不确定为什么这是一个优势。
- 显然,GitHub 应用程序可以安装在不同的存储库中,也可以在市场上发布。但我也可以对不同存储库中的 Webhooks 使用相同的 URL,从而在一定程度上模仿 repository-webhooks 的行为。
- 还有什么?
主要区别在于 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.