Skip to main content

使用 GitHub CLI 转发用于测试的 Webhook

可以使用 GitHub CLI 在开发环境中测试 Webhook,而无需端口转发或第三方工具的复杂性。

关于使用 GitHub CLI 接收 Webhook

更改集成代码时,在本地环境中运行代码可以快速测试和迭代,而无需部署代码。 可以使用 GitHub CLI 将 Webhook 转发到本地环境。

GitHub CLI 中的 Webhook 转发仅适用于存储库和组织 Webhook。 如果要在本地测试其他类型的 Webhook,则需要手动执行此操作。 有关详细信息,请参阅“测试 web 挂钩”。

Warning

Webhook 转发仅供测试和开发期间使用。 不支持在生产环境中使用它来处理实时 Webhook。

使用 GitHub CLI 接收 Webhook

若要详细了解 GitHub CLI,请参阅“关于 GitHub CLI”。

  1. 若要安装 GitHub CLI 扩展以启用 Webhook 转发,请使用 extension install 子命令。

    gh extension install cli/gh-webhook
    
  2. 如果想转发组织 Webhook,请将 admin:org_hook 范围添加到 GitHub CLI 登录,以便拥有所需的权限。

    gh auth refresh --scopes admin:org_hook
    
  3. 在本地启动应用程序,并记下希望接收 Webhook 的 URL。 本指南假定应用程序正在侦听 http://localhost:3000/webhook 中的 Webhook 事件。

  4. 若要设置要传递到应用程序的 Webhook,请运行 webhook forward 子命令。 将 REPOSITORY 替换为存储库的名称。 例如,monalisa/octocat。 将 EVENTS 替换为要接收的事件的逗号分隔列表。 例如,issues,pull_request。 将 URL 替换为应用程序希望接收 Webhook 的本地 URL。 例如,"http://localhost:3000/webhook"。 若要侦听组织 Webhook 而不是存储库 Webhook,请将 --repo 标志替换为 --org 标志。 例如,--org="octo-org"

    gh webhook forward --repo=REPOSITORY --events=EVENTS --url=URL
    

让命令在后台运行。 它将接收指定存储库的所有指定事件,并将其转发到在指定 URL 处运行的 Webhook 处理程序。

Note

对于每个存储库和组织,一次只能有一个人使用 Webhook 转发。 如果你尝试设置 Webhook 转发,但其他人已在该组织或存储库中使用该转发,则会收到 Hook already exists 错误。