Webhook 排错
Tier: 基础版,专业版,旗舰版
Offering: JihuLab.com,私有化部署
排错和解决极狐GitLab Webhook 常见问题。
调试 Webhook
调试极狐GitLab Webhook 并使用以下方法捕获有效载荷:
有关 Webhook 事件和 JSON 有效载荷的信息,请参见 Webhook 事件。
使用公共 Webhook 检查工具
使用公共工具检查和测试 Webhook 有效载荷。这些工具为 HTTP 请求提供捕获所有端点,并响应 200 OK 状态码。
使用公共工具时请小心,因为你可能会将敏感数据发送到外部服务。使用测试令牌并轮换任何无意中发送给第三方的密钥。为了增强隐私,创建私有 Webhook 接收器。
公共 Webhook 检查工具包括:
- Beeceptor:创建临时 HTTPS 端点并检查传入有效载荷。
- Webhook.site:查看传入有效载荷。
- Webhook Tester:检查和调试传入有效载荷。
使用极狐GitLab 开发工具包(GDK)
为了更安全的开发环境,请使用 极狐GitLab 开发工具包(GDK) 在本地处理极狐GitLab Webhook。使用 GDK 从本地极狐GitLab 实例向机器上的 Webhook 接收器发送 Webhook。
要使用此方法,请安装和配置 GDK。
创建私有 Webhook 接收器
如果无法向 公共接收器 发送 Webhook 有效载荷,请创建自己的私有 Webhook 接收器。
先决条件:
- 系统上安装了 Ruby。
要创建私有 Webhook 接收器:
-
将此脚本保存为 print_http_body.rb:
ruby1require 'webrick' 2 3server = WEBrick::HTTPServer.new(:Port => ARGV.first) 4server.mount_proc '/' do |req, res| 5 puts req.body 6end 7 8trap 'INT' do 9 server.shutdown 10end 11server.start -
选择一个未使用的端口(例如 8000)并启动脚本:
shellruby print_http_body.rb 8000 -
在极狐GitLab 中,使用你的接收器 URL(例如 http://receiver.example.com:8000/)配置 Webhook。
-
选择 测试。你应该看到类似于以下内容的输出:
plaintext{"before":"077a85dd266e6f3573ef7e9ef8ce3343ad659c4e","after":"95cd4a99e93bc4bbabacfa2cd10e6725b1403c60",<SNIP>} example.com - - [14/May/2014:07:45:26 EDT] "POST / HTTP/1.1" 200 0 - -> /
要添加此接收器,你可能需要 允许请求到本地网络。
解决 SSL 证书验证错误
当启用 SSL 验证时,极狐GitLab 可能无法验证 Webhook 端点的 SSL 证书,并出现以下错误:
plaintext无法获取本地颁发者证书
当根证书未由受信任的证书颁发机构(由 CAcert.org 确定)颁发时,通常会发生此错误。
要解决此问题:
- 使用 SSL Checker 来确定具体的错误。
- 检查丢失的中间证书,这是验证失败的常见原因。
Webhook 未触发
版本历史
- 在极狐GitLab 16.3 中引入了在静默模式下未触发 Webhook 的功能。
如果 Webhook 未触发,请验证:
错误:Webhook 速率限制超出
Webhook 可能因速率限制而失败。JihuLab.com 限制每个顶级命名空间每分钟的 Webhook 调用总数。有关更多信息,请参见 速率限制。
确认速率限制是否为问题:
- 检查极狐GitLab 日志中是否有消息 Webhook 速率限制超出。
- 减少触发 Webhook 的事件数量,或联系极狐GitLab 支持团队以讨论你的速率限制需求。