关于测试 Webhook
您可以测试 Webhook 传递。这将使您能够验证 GitHub 是否在响应您期望触发 Webhook 传递的事件时发送 Webhook 传递。
您还可以通过使用您的计算机或代码空间作为本地服务器并将 Webhook 传递转发到您的本地服务器来测试处理 Webhook 传递的代码。这将使您能够开发和调试代码,而无需将代码部署到生产服务器。
测试 Webhook 传递
您可以触发 Webhook 事件并验证 GitHub 是否已发送 Webhook 传递。
-
触发您的 Webhook。例如,如果您正在测试订阅了
issues
事件的仓库 Webhook,请在配置 Webhook 的仓库中打开一个问题。您还可以重新传递以前的 Webhook 传递。有关更多信息,请参阅“重新传递 Webhook”。
如果您使用的是组织或仓库 Webhook,您还可以使用 REST API 为您的 Webhook 触发
ping
事件。如果您使用的是仓库 Webhook 并且您的 Webhook 订阅了push
事件,您可以使用 REST API 为您的 Webhook 触发测试push
事件。有关更多信息,请参阅“仓库 Webhook 的 REST API 端点”和“组织 Webhook 的 REST API 端点”。 -
检查 GitHub 以验证是否已发送 Webhook 传递。有关如何针对每种 Webhook 类型执行此操作的信息,请参阅“查看 Webhook 传递”。
如果 webhook 传递未发送,或者 webhook 传递已发送但 GitHub 指示传递失败,请参考故障排除指南以帮助诊断问题。有关更多信息,请参阅“故障排除 webhook”。
在本地测试 webhook 代码
为了在您的计算机或 codespace 上本地测试您的 webhook 代码,您可以使用 webhook 代理 URL 将 webhook 从 GitHub 转发到您的计算机或 codespace。您可以使用您的计算机或 codespace 作为本地服务器来接收这些转发的 webhook。
以下部分演示了如何使用 smee.io 提供 webhook 代理 URL 并转发 webhook。
有关代码和测试步骤的具体示例,请参阅“处理 webhook 传递”。
获取 webhook 代理 URL
- 在您的浏览器中,导航到 https://smee.io/.
- 点击开始新频道。
- 复制“Webhook 代理 URL”下的完整 URL。您将在以下设置步骤中使用此 URL。
配置 webhook 以使用 webhook 代理 URL
配置您的 webhook 以使用上面的 webhook 代理 URL。有关更多信息,请参阅“创建 webhook”和“编辑 webhook”。
现在,GitHub 将将 webhook 传递发送到该 URL。
启动本地服务器
在您的计算机或 codespace 上,启动本地服务器。您执行此操作的方式取决于您接收 webhook 的代码的编写方式。有关示例,请参阅“处理 webhook 传递”。
您应该确保您的代码可以在本地运行。例如,如果您的代码依赖于生产环境中服务器上的环境变量,您应该确保环境变量也存在于您的本地服务器上。
您可能还会发现添加日志语句很有用,这样您就可以验证代码步骤是否按预期执行。
在测试 webhook 时,请保持本地服务器运行。
转发 webhook
-
如果您尚未安装 smee-client,请在您的终端中运行以下命令
Shell npm install --global smee-client
npm install --global smee-client
-
要接收来自 smee.io 的转发 Webhook,请在您的终端中运行以下命令。将
WEBHOOK_PROXY_URL
替换为您之前获得的 Webhook 代理 URL。将PATH
替换为您的服务器将处理的路径或路由。将PORT
替换为您的本地服务器正在监听的端口。Shell smee --url WEBHOOK_PROXY_URL --path /PATH --port PORT
smee --url WEBHOOK_PROXY_URL --path /PATH --port PORT
您应该看到类似于此的输出,其中
WEBHOOK_PROXY_URL
、PORT
和PATH
占位符将被您指定的实际值替换Shell Forwarding WEBHOOK_PROXY_URL to http://127.0.0.1:PORT/PATH Connected WEBHOOK_PROXY_URL
Forwarding WEBHOOK_PROXY_URL to http://127.0.0.1:PORT/PATH Connected WEBHOOK_PROXY_URL
现在,当您的 Webhook 代理 URL(smee.io URL)从 GitHub 接收 Webhook 传递时,smee 将将 Webhook 传递转发到您的本地服务器。
-
在您测试 Webhook 时保持此程序运行。当您想停止转发 Webhook 时,请按 Ctrl+C。
此时,您应该同时运行本地服务器和 smee 转发。
触发 Webhook 传递
触发您的 Webhook。例如,如果您正在测试订阅了 issues
事件的仓库 Webhook,请在配置 Webhook 的仓库中打开一个问题。
您还可以重新传递以前的 Webhook 传递。有关更多信息,请参阅“重新传递 Webhook”。
验证传递
您可以验证 GitHub 是否发送了 Webhook 传递,smee 是否接收并转发了传递,以及您的本地服务器是否处理了 Webhook 传递。
验证 GitHub 是否发送了传递
检查 GitHub 以验证是否已发送 Webhook 传递。有关更多信息,请参阅“查看 Webhook 传递”。
如果 webhook 传递未发送,或者 webhook 传递已发送但 GitHub 指示传递失败,请参考故障排除指南以帮助诊断问题。有关更多信息,请参阅“故障排除 webhook”。
验证 smee 是否接收了您的 Webhook 传递
导航到 smee.io 上的 Webhook 代理 URL。您应该看到一个与您触发或重新传递的事件相对应的事件。这表明 GitHub 已成功将 Webhook 传递发送到您指定的有效负载 URL。
如果您在 smee.io 上看不到您的 Webhook 传递,请验证您的 Webhook 是否使用您的 Webhook 代理 URL(smee.io URL)。
验证 smee 是否转发了您的 Webhook 传递
在您运行 smee --url WEBHOOK_PROXY_URL --path /PATH --port PORT
的终端窗口中,您应该看到类似于 POST http://127.0.0.1:3000/webhook - 202
的内容。这表明 smee 已成功将您的 Webhook 转发到您的本地服务器。
如果您没有看到此内容,请确保 smee 客户端和您的本地服务器都在运行。您应该在两个单独的终端窗口中运行这些进程。
您还应该检查运行 smee 客户端和本地服务器的终端窗口中的错误。具体错误取决于您接收 Webhook 的代码编写方式。例如,请参阅“处理 Webhook 传递”。
验证您的本地服务器是否已处理 Webhook 传递
此时,您已验证 GitHub 是否已发送 Webhook 传递,以及 smee 是否已将传递转发到您的本地服务器。现在,您应该验证您的代码是否按预期处理了 Webhook 传递。执行此操作的方式取决于您接收 Webhook 的代码编写方式。例如,请参阅“处理 Webhook 传递”。