学完 webhook 的基础知识后,接下来了解如何生成自己的基于 webhook 的集成。 在本教程中,我们将创建一个仓库 web 挂钩,它将负责� �据仓库每天收到的议题数量列出仓库的受欢迎程度。
创建 web 挂钩是一个两步过程。 首先需要设置 web 挂钩通过 GitHub Enterprise Server 实施的行为 - 它应该侦听哪些事件。 之后,您将设置服务器以接收和管理有效负载。
利用 Webhook REST API,� 可以管理存储库、组织和应用 Webhook。 也可以使用 REST API 来更改 Webhook 的配置。 例如,您可以修改有效负载 URL、内容类型、SSL 验证和机密。 有关详细信息,请参阅:
向互联网显示本地主机
在本教程中,我们将使用本地服务器接收来自 GitHub 的消息。 � 此,首先,我们需要将我们的本地发展环境显示给互联网。 我们将使用 ngrok 实现此目的。 所有主要操作系统均可免费使用 ngrok。 有关详细信息,请参阅 ngrok
下载页面。
安装 ngrok
后,可以通过在命令行上运行 ./ngrok http 4567
来公开本地主机。 4567 是我们服务器侦听消息的端口号。 您应该会看到如下所示的行:
$ Forwarding http://7e9ea9dc.ngrok.io -> 127.0.0.1:4567
记下 *.ngrok.io
URL。 我们将用它来设置 web 挂钩。
设置 Webhook
您可以在组织或特定仓库上安装 web 挂钩。
要设置 web 挂钩,请转到仓库或组织的设置页面。 然后,依次单击“Webhook”和“添� Webhook” 。
另外,� 可以选择使用 Webhook API 生成和管理 Webhook。
Web 挂钩需要设置� 个配置选项才能使用。 我们将在下面介绍所有这些设置。
有效负载 URL
有效负载 URL 是将接收 Webhook POST
请求的服务器的 URL。
由于我们为本教程进行本地开发,� 此将其设置为 *.ngrok.io
URL,且后接 /payload
。 例如 http://7e9ea9dc.ngrok.io/payload
。
内容类型
Web 挂钩可通过不同的内容类型� 递:
application/json
内容类型直接将 JSON 有效负载作为POST
请求的正文� 递。application/x-www-form-urlencoded
内容类型将 JSON 有效负载作为表单参数发送,称为payload
。
选择最符合� 需要的预设。 对于本教程,默认的内容类型 application/json
适用。
机密
通过设置 Webhook 机密,可以确保发送到有效负载 URL 的 POST
请求来自 GitHub Enterprise Server。 设置机密时,� 将在 Webhook POST
请求中收到 X-Hub-Signature
和 X-Hub-Signature-256
� �头。 有关如何使用带有签名� �头的机密来保护 Webhook 有效负载的详细信息,请参阅“保护 Webhook”。
SSL 验证
如果您的“有效负载 URL”是一个安全站点 (HTTPS),您可以选择配置 SSL 验证设置。 如果您的“有效负载 URL”不安全 (HTTP),GitHub 不会显示此选项。 默认情况下,GitHub 在� 递 web 挂钩有效负载时验证网站的 SSL 证书。 SSL 验证有助于确保将挂钩有效负载安全地� 递到 URL 端点。 � 可以选择禁用 SSL,但我们建议保留“启用 SSL 验证”的选中状态。
活动
默认情况下,web 挂钩交付为“Active(激活)”。 您可以通过取消选择“Active(激活)”来选择禁用 web 挂钩交付。
事件
事件是 web 挂钩的� �心。 当仓库上发生特定操作时,就会触发这些 web 挂钩,而服务器的有效负载 URL 会截获它们并采取行动。
可在 webhook API 参考中找到完整的 webhook 事件列表及其执行时间。
由于 webhook 正在处理存储库中的问题,� 此单击“选择单个事件”,然后单击“问题” 。 请确保选择“可用”以接收触发的 Webhook 的问题事件。 您还可以使用默认选项选择所有事件。
完成后,单击“添� Webhook”。
现在您创建了 web 挂钩,是时候设置我们的本地服务器来测试 web 挂钩了。 转到配置服务器,了解如何实现这一目� �。
通配符事件
要为所有事件配置 webhook,请使用通配符 (*
) 指定 webhook 事件。 添� 通配符事件时,我们将用通配符事件替换您配置的任何现有事件,并向您发送所有受支持事件的有效负载。 您还会自动获取我们可能在将来添� 的任何新事件。