Skip to main content

webhookのテスト

Webhook の配信を処理する Webhook とコードをテストする方法について説明します。

Webhook のテストについて

Webhook の配信をテストできます。 これにより、GitHub が Webhook 配信をトリガーする予定のイベントに応答して Webhook 配信を送信することを確認できます。

コンピューターまたはコードスペースをローカル サーバーとして使用し、Webhook 配信をローカル サーバーに転送することで、Webhook 配信を処理するコードをテストすることもできます。 これにより、コードを実稼働サーバーにデプロイすることなく、コードを開発およびデバッグできます。

Webhook 配信のテスト

Webhook イベントをトリガーし、GitHub が Webhook 配信を送信したことを確認できます。

  1. Webhook をトリガーします。 たとえば、issues イベントをサブスクライブするリポジトリ Webhook をテストしている場合は、Webhook が構成されているリポジトリでイシューを開きます。

    以前の Webhook 配信を再配信することもできます。 詳しくは、「Webhook の再配信」を参照してください。

    組織またはリポジトリ Webhook を使用している場合は、REST API を使用して Webhook の ping イベントをトリガーすることもできます。 リポジトリ Webhook を使用していて且つ Webhook が push イベントをサブスクライブしている場合は、REST API を使用して Webhook のテスト push イベントをトリガーできます。 詳細については、「リポジトリ ウェブフック の REST API エンドポイント」および「組織の Webhook の REST API エンドポイント」を参照してください。

  2. GitHub をチェックして、Webhook 配信が送信されたことを確認します。 Webhook の種類ごとにこれを行う方法については、「webhookの配信の表示」を参照してください。

Webhook 配信が送信されなかった場合、または Webhook 配信が送信されたが、GitHub が配信に失敗したことを示している場合は、トラブルシューティング ガイドを参照して問題を診断してください。 詳しくは、「Webhook のトラブルシューティング」を参照してください。

Webhook コードをローカルでテストする

Webhook コードをコンピューターまたはコードスペース上でローカルにテストするには、Webhook プロキシ URL を使用して、Webhook を GitHub からコンピューターまたは codespace ペースに転送します。 コンピューターまたはコードスペースをローカル サーバーとして使用して、これらの転送された Webhook を受信できます。

次のセクションでは、smee.io を使用して webhook プロキシ URL を指定し、Webhook を転送する方法を示します。

コードとテスト手順の具体的な例については、「webhookの配信の取り扱い」を参照してください。

Webhook プロキシ URL を取得する

  1. ブラウザーで https://smee.io/ にアクセスします。
  2. [Start a new channel] (新しいチャネルの開始) をクリックします。
  3. [Webhook Proxy URL] (Webhook プロキシ URL) の下にある完全な URL をコピーします。 この URL は次の設定ステップで使用します。

webhook プロキシ URL を使用するように webhook を構成する

上記の webhook プロキシ URL を使用するように webhook を構成します。 詳細については、「webhookの作成」および「webhookの編集」を参照してください。

これで、GitHub はその URL に Webhook 配信を送信します。

ローカル サーバーを開始する

コンピューターまたは codespace で、ローカル サーバーを起動します。 これを行う方法は、Webhook を受け取るコードの記述方法によって異なります。 例については、「webhookの配信の取り扱い」を参照してください。

コードをローカルで実行できることを確認する必要があります。 たとえば、コードが運用環境のサーバーの環境変数に依存している場合は、環境変数がローカル サーバーでも使用できることを確認する必要があります。

コードのステップが想定どおりに実行されたことを確認できるように、ログ ステートメントを追加すると便利な場合もあります。

Webhook のテスト中は、ローカル サーバーを実行し続けます。

Webhook の転送

  1. smeeクライアント がまだインストールされていない場合は、ターミナルで次のコマンドを実行します。

    Shell
    npm install --global smee-client
    
  2. smee.io から転送された Webhook を受信するには、ターミナルで次のコマンドを実行します。 WEBHOOK_PROXY_URL を、以前の Webhook プロキシ URL に置き換えます。 サーバーが処理するパスまたはルートに PATH を置き換えます。 ローカル サーバーがリッスンしているポートに PORT に置き換えます。

    Shell
    smee --url WEBHOOK_PROXY_URL --path /PATH --port PORT
    

    WEBHOOK_PROXY_URLPORT、および PATH のプレースホルダーは指定した値に置き換えられるというような出力が表示されます。

    Shell
    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 配信をローカル サーバーに転送します。

  3. Webhook のテスト中は、これを実行し続けます。 Webhook の転送を停止する場合は、Ctrl+C を押します。

この時点で、ローカル サーバーと smee フォワーディングの両方が実行されている必要があります。

Webhook 配信をトリガーする

Webhook をトリガーします。 たとえば、issues イベントをサブスクライブするリポジトリ Webhook をテストしている場合は、Webhook が構成されているリポジトリでイシューを開きます。

以前の Webhook 配信を再配信することもできます。 詳しくは、「Webhook の再配信」を参照してください。

配信を確認する

GitHub が Webhook 配信を送信し、その配信を受信して転送したことを確認し、ローカル サーバーが Webhook 配信を処理したことを確認できます。

GitHub が配信したかを検証

GitHub をチェックして、Webhook 配信が送信されたことを確認します。 詳しくは、「webhookの配信の表示」を参照してください。

Webhook 配信が送信されなかった場合、または Webhook 配信が送信されたが、GitHub が配信に失敗したことを示している場合は、トラブルシューティング ガイドを参照して問題を診断してください。 詳しくは、「Webhook のトラブルシューティング」を参照してください。

smee が Webhook 配信を受け取ったかどうかを確認する

smee.io の Webhook プロキシ URL に移動します。 トリガーまたは再配信したイベントに対応するイベントが表示されるはずです。 これは、GitHub が、指定したペイロード URL に Webhook 配信を正常に送信したことを表します。

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 クライアントとローカル サーバーの両方が動作されていることを確認します。 これらのプロセスは、2 つの個別のターミナル ウィンドウで実行されます。

また、smee クライアントとローカル サーバーを実行しているターミナル ウィンドウでエラーも確認します。 具体的なエラーは、Webhook を受信するコードの記述方法によって異なります。 例については、「webhookの配信の取り扱い」を参照してください。

ローカル サーバーが Webhook 配信を処理したことを確認する

この時点で、GitHub が Webhook 配信を送信し、その配信がローカル サーバーに転送されたことを確認しました。 次に、コードが Webhook の配信が想定どおりに処理されたことを確認する必要があります。 これを行う方法は、Webhook を受け取るコードの記述方法によって異なります。 例については、「webhookの配信の取り扱い」を参照してください。