webhooks 故障排查

  • Tier: 基础版, 专业版, 旗舰版
  • Offering: JihuLab.com,私有化部署

排查并解决极狐GitLab webhooks 的常见问题。

调试 Webhooks#

使用以下方法调试极狐GitLab webhooks 并捕获负载:

有关 webhook 事件和 JSON 负载的信息,请参阅 webhook events

使用公共 Webhook 检查工具#

使用公共工具来检查和测试 webhook 负载。这些工具为 HTTP 请求提供全捕获端点,并以 200 OK 状态码响应。

使用公共工具时请谨慎,因为您可能会将敏感数据发送到外部服务。使用测试令牌并旋转任何意外发送给第三方的密钥。为增强隐私,请[创建一个私有 webhook 接收器](#create-a-private-webhook-receiver)。

公共 webhook 检查工具包括:

  • Beeceptor: 创建一个临时 HTTPS 端点并检查传入的负载。
  • Webhook.site: 查看传入的负载。
  • Webhook Tester: 检查和调试传入的负载。

使用极狐GitLab Development Kit (GDK)#

为了更安全的开发环境,使用极狐GitLab Development Kit (GDK)在本地处理极狐GitLab webhooks。使用 GDK 从本地极狐GitLab 实例向您机器上的 webhook 接收器发送 webhooks。

要使用此方法,请安装和配置 GDK。

创建私有 Webhook 接收器#

如果无法将 webhook 负载发送到 公共接收器,请创建您自己的私有 webhook 接收器。

前提条件:

  • 您的系统上已安装 Ruby。

要创建私有 webhook 接收器:

  1. 将此脚本保存为 print_http_body.rb

    ruby
    1require '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
  2. 选择一个未使用的端口(例如,8000)并启动脚本:

    shell
    ruby print_http_body.rb 8000
  3. 在极狐GitLab 中,配置 webhook 使用您的接收器 URL(例如,http://receiver.example.com:8000/)。

  4. 选择 Test。您应该看到类似以下的输出:

    plaintext
    {"before":"077a85dd266e6f3573ef7e9ef8ce3343ad659c4e","after":"95cd4a99e93bc4bbabacfa2cd10e6725b1403c60",<SNIP>} example.com - - [14/May/2014:07:45:26 EDT] "POST / HTTP/1.1" 200 0 - -> /
要添加此接收器,您可能需要[允许对本地网络的请求](../../../security/webhooks.md)。

解决 SSL 证书验证错误#

当启用 SSL 验证时,极狐GitLab 可能会因以下错误而无法验证 webhook 端点的 SSL 证书:

plaintext
unable to get local issuer certificate

此错误通常发生在根证书不是由 CAcert.org 确定的受信证书颁发机构颁发时。

要解决此问题:

  1. 使用 SSL Checker 来识别特定错误。
  2. 检查缺失的中间证书,这是验证失败的常见原因。

Webhook 未触发#

History
    • 静默模式下 Webhook 不可以被触发引入于极狐GitLab 16.3。

如果 webhook 未触发,请验证: