关于 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 将发送包含有关该事件的数据的 HTTP 请求到您指定的 URL。如果您的服务器已设置为侦听该 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 具有以下优势:
- Webhook 比轮询 API 需要更少的精力和更少的资源。
- Webhook 比 API 调用更具可扩展性。如果您需要监控许多资源,则为每个资源调用 API 可能会导致您很快达到 API 速率限制配额。相反,您可以订阅多个 Webhook 事件,并且只有在事件发生时才接收信息。
- Webhook 允许近乎实时的更新,因为 Webhook 在事件发生时触发。
如果您只需要一次或间歇性地获取信息,或者只想从少量资源中获取信息且没有扩展计划,则可以在需要相关信息时调用 API。
有关使用 Webhook 时应遵循的最佳实践的信息,请参阅“使用 Webhook 的最佳实践”。
注意
GitHub 服务(有时称为服务挂钩)已停用,取而代之的是与 Webhook 集成。有关将您的集成从使用 GitHub 服务迁移到使用 Webhook 的更多信息,请参阅博文。