Skip to main content

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

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

关于使用 GitHub CLI 接收 Webhook

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

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

警告: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 处理程序。

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