关于 Webhook
Webhook 允许您订阅软件系统中发生的事件,并在这些事件发生时自动接收数据传送至您的服务器。
Webhook 用于接收实时数据,而不是轮询 API(间歇性调用 API)以查看数据是否可用。使用 Webhook,您只需要在创建 Webhook 时对事件表示兴趣即可。
Webhook 用于广泛的场景,包括
- 在外部 CI 服务器上触发 CI(持续集成)管道。例如,当代码推送到分支时,在 Jenkins 或 CircleCI 中触发 CI。
- 将有关 GitHub 上事件的通知发送到协作平台。例如,当拉取请求中出现审核时,向 Discord 或 Slack 发送通知。
- 更新外部问题跟踪器,如 Jira。
- 部署到生产服务器。
- 将事件记录为在 GitHub 上发生的事件,以进行审计。
关于 GitHub 上的 Webhook
当您创建 Webhook 时,您指定一个 URL 并订阅在 GitHub 上发生的事件。当您订阅的 Webhook 发生的事件发生时,GitHub 将向您指定的 URL 发送包含事件数据的 HTTP 请求。如果您的服务器设置在该 URL 侦听 Webhook 传送,则它可以在收到传送时采取措施。
例如,您可以将 Webhook 订阅到在代码推送到存储库、打开拉取请求、构建 GitHub Pages 网站或将新成员添加到团队时发生的事件。您的服务器可以通过将代码部署到生产环境、触发 CI 管道、发送通知或为新团队成员创建 GitHub 项目来响应。
您必须在特定存储库、组织、GitHub Marketplace 帐户、GitHub Sponsors 帐户或 GitHub App 中创建一个 Webhook。Webhook 只能访问已安装它的存储库、组织、GitHub Marketplace 帐户、GitHub Sponsors 帐户或 GitHub App 中可用的资源。有关更多信息,请参阅“Webhook 类型”。
有关创建 Webhook 的更多信息,请参阅“创建 Webhook”。有关您可以订阅的事件类型的更多信息,请参阅“Webhook 事件和有效负载”。有关配置服务器以响应有效负载传递采取操作的更多信息,请参阅“处理 Webhook 传递”。
注意:GitHub Webhook 目前不支持 IPv6,但将来会支持。/meta
REST API 端点返回 IPv6 范围以启用该转换。
选择 Webhook 或 REST API
与使用 API 相比,使用 Webhook 具有以下优点
- 与轮询 API 相比,Webhook 需要更少的精力和资源。
- Webhook 的可扩展性优于 API 调用。如果您需要监视许多资源,则为每个资源调用 API 可能会很快达到 API 速率限制配额。相反,您可以订阅多个 Webhook 事件,并且仅在事件发生时接收信息。
- Webhook 允许近乎实时的更新,因为 Webhook 在事件发生时触发。
如果您只需要一次或间歇性地获取信息,或者只想从一小组资源中获取信息,而没有扩展计划,则可以在需要相关信息时调用 API。
有关使用 Webhook 时要遵循的最佳实践的信息,请参阅“使用 Webhook 的最佳实践”。
注意:GitHub 服务(有时称为服务挂钩)已在 2019 年弃用,取而代之的是与 Webhook 集成。有关将集成从使用 GitHub 服务迁移到使用 Webhook 的更多信息,请参阅博客文章。