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レシーバーを作成するには:
このスクリプトを
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未使用のポート(例:
8000)を選択して、スクリプトを開始します:ruby print_http_body.rb 8000GitLabで、レシーバーのURL(例:
http://receiver.example.com:8000/)を使用してWebhookを構成します。テストを選択します。次のような出力が表示されます:
{"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このエラーは通常、ルート証明書が認証局によって発行されていない場合に発生します。
この問題を解決するには、以下を実行します:
- SSLチェッカーを使用して、特定のエラーを特定します。
- 検証失敗の一般的な原因である、中間証明書がないか確認してください。
Webhookがトリガーされない
Webhookがトリガーされない場合は、以下を確認してください: