正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

Webhookのトラブルシューティング

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

GitLab Webhookに関する一般的なイシューのトラブルシューティングと解決を行います。

デバッグWebhook

次の方法で、GitLab Webhookをデバッグし、ペイロードをキャプチャします:

WebhookイベントとJSONペイロードについては、Webhookイベントを参照してください。

パブリックWebhook検査ツールを使用する

パブリックツールを使用して、Webhookのペイロードを検査およびテストします。これらのツールは、HTTPリクエストに対するキャッチオールエンドポイントを提供し、200 OKステータスコードで応答します。

パブリックツールを使用する際は、機密データを外部サービスに送信する可能性があるため、注意してください。テストトークンを使用し、サードパーティに誤って送信されたシークレットをローテーションします。プライバシーを強化するには、プライベートWebhookレシーバーを作成します。

パブリックWebhook検査ツールには、次のものがあります:

  • Beeceptor: 一時的なHTTPSエンドポイントを作成し、受信ペイロードを検査します。
  • Webhook.site: 受信ペイロードをレビューします。
  • Webhook Tester: 受信ペイロードを検査およびデバッグします。

GitLab Development Kit(GDK)を使用する

より安全な開発環境を実現するには、GitLab Development Kit(GDK)を使用して、ローカルでGitLab Webhookを操作します。GDKを使用して、ローカルのGitLabインスタンスからマシン上のWebhookレシーバーにWebhookを送信します。

このアプローチを使用するには、GDKをインストールして構成します。

プライベートWebhookレシーバーを作成する

パブリックレシーバーにWebhookのペイロードを送信できない場合は、独自のプライベートWebhookレシーバーを作成します。

前提要件:

  • Rubyがシステムにインストールされている。

プライベートWebhookレシーバーを作成するには:

  1. このスクリプトをprint_http_body.rbとして保存します:

    require 'webrick'
    
    server = WEBrick::HTTPServer.new(:Port => ARGV.first)
    server.mount_proc '/' do |req, res|
      puts req.body
    end
    
    trap 'INT' do
      server.shutdown
    end
    server.start
  2. 未使用のポート(例: 8000)を選択して、スクリプトを開始します:

    ruby print_http_body.rb 8000
  3. GitLabで、レシーバーのURL(例: http://receiver.example.com:8000/)を使用してWebhookを構成します。

  4. テストを選択します。次のような出力が表示されます:

    {"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証明書の検証に失敗する可能性があります:

unable to get local issuer certificate

このエラーは通常、ルート証明書が認証局によって発行されていない場合に発生します。

この問題を解決するには、以下を実行します:

  1. SSLチェッカーを使用して、特定のエラーを特定します。
  2. 検証失敗の一般的な原因である、中間証明書がないか確認してください。

Webhookがトリガーされない

Webhookがトリガーされない場合は、以下を確認してください:

  • Webhookが自動的に無効になっていないこと。
  • GitLabインスタンスがサイレントモードになっていないこと。
  • Push event activities limit(プッシュイベントアクティビティー制限)およびPush event hooks limit(プッシュイベントフック制限)の設定が管理者エリア0より大きい値に設定されていること。