我们已了解 web 挂钩的基础知识,现在我们来构建自己的 web 挂钩支持的集成。 在本教程中,我们将创建一个仓库 web 挂钩,它将负责� �据仓库每天收到的议题数量列出仓库的受欢迎程度。
创建 web 挂钩是一个两步过程。 首先需要设置 web 挂钩通过 GitHub Enterprise Server 实施的行为 - 它应该侦听哪些事件。 之后,您将设置服务器以接收和管理有效负载。
Web 挂钩 REST API 可让您管理存储库、组织和应用程序 web 挂钩。 您还可以使用 REST API 更改 web 挂钩的配置。 例如,您可以修改有效负载 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 挂钩。
设置 web 挂钩
您可以在组织或特定仓库上安装 web 挂钩。
要设置 web 挂钩,请转到仓库或组织的设置页面。 在那里,单击 Webhooks(web 挂钩),然后单击 Add webhook(添� web 挂钩)。
或者,您可以选择通过 web 挂钩 API 来构建和管理 web 挂钩。
Web 挂钩需要设置� 个配置选项才能使用。 我们将在下面介绍所有这些设置。
有效负载 URL
有效负载 URL 是接收 web 挂钩 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
。
密钥
设置 web 挂钩密钥使您可以确保将 POST
请求发送到来自 GitHub Enterprise Server 的有效负载 URL。 在设置机密时,您将在 web 挂钩 POST
请求中收到 X-Hub-Signature
和 X-Hub-Signature-256
� �头。 有关如何使用密钥和签名� �头来保护 web 挂钩有效负载的更多信息,请参阅“保护 web 挂钩”。
SSL 验证
如果您的“有效负载 URL”是一个安全站点 (HTTPS),您可以选择配置 SSL 验证设置。 如果您的“有效负载 URL”不安全 (HTTP),GitHub 不会显示此选项。 默认情况下,GitHub 在� 递 web 挂钩有效负载时验证网站的 SSL 证书。 SSL 验证有助于确保将挂钩有效负载安全地� 递到 URL 端点。 您可以选择禁用 SSL,但我们建议保留Enable SSL verification(启用 SSL 验证)的选中状态。
已激活
默认情况下,web 挂钩交付为“Active(激活)”。 您可以通过取消选择“Active(激活)”来选择禁用 web 挂钩交付。
事件
事件是 web 挂钩的� �心。 当仓库上发生特定操作时,就会触发这些 web 挂钩,而服务器的有效负载 URL 会截获它们并采取行动。
有关 web 挂钩事件的完整列表以及它们在什么情况下执行,请参阅 web 挂钩 API 参考资料。
由于我们的 web 挂钩与仓库中的议题相关,� 此我们单击 Let me select individual events(让我选择单个事件),然后单击 Issues(议题)。 确保选择 Active(激活)以接收触发 web 挂钩的议题事件。 您还可以使用默认选项选择所有事件。
完成后,单击 Add webhook(添� web 挂钩)。
现在您创建了 web 挂钩,是时候设置我们的本地服务器来测试 web 挂钩了。 请参阅配置服务器了解如何进行测试。
通配符事件
要为所有事件配置 web 挂钩,请使用通配符 (*
) 来指定 web 挂钩事件。 添� 通配符事件时,我们将用通配符事件替换您配置的任何现有事件,并向您发送所有受支持事件的有效负载。 您还会自动获取我们可能在将来添� 的任何新事件。