Webhook

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

この記事では、Webhook と、それらを Azure DevOps プロジェクト用に設定する方法について説明します。 Webhook は、パブリック エンドポイントを持つ任意のサービスに Azure DevOps イベントの JSON 表現を送信する方法を提供します。

Note

Azure DevOps は、サービス フックの設定や外部サービスとの統合に対して課金されません。 サービスに関連する価格については、特定のサービスのサイトを参照してください。

前提条件

Azure DevOps 組織の Webhook を管理するには、次の前提条件が必要です。

  • 組織内の所有者 または プロジェクト コレクション管理者 ロール。

  • 組織内のプロジェクト、および Azure DevOps イベントを送信するパブリック HTTP または HTTPS エンドポイントを持つサービス。

    重要

    HTTPS エンドポイントのみを使用することをお勧めします。 HTTP には、イベント ペイロードで暗号化されずに、認証ヘッダーを含むプライベート データを送信する可能性があります。 Webhook での基本認証には HTTPS を使用する必要があります。

JSON 表現をサービスに送信する

  1. Azure DevOps プロジェクトで、https://<organization-name>/<project-name>/_settings/serviceHooksProject settings>Service hooks に移動します。

    プロジェクト設定の [Service hooks]\(サービス フック\) の選択のスクリーンショット。

  2. Service Hooks ページで、+ アイコンまたは サブスクリプションの作成を選択します。

    [サービス フック] ページで [サブスクリプションの作成] を選択したスクリーンショット。

  3. Service画面で、[Web Hooksを選択し次へを選択

    [サービス] ページで [Web フック] を選択しているスクリーンショット。

  4. Trigger 画面で、Webhook をトリガーする Azure DevOps イベントを選択して構成し、Next を選択します。 Azure DevOps コンシューマーによってポストされる JSON ペイロードの詳細については、「 Service hooks events」を参照してください。

    トリガー イベントの選択と構成のスクリーンショット。

  5. Action画面で、ターゲット URLイベントが発生したときに実行する処理を構成します。 送信するメッセージの詳細、送信するメッセージの、および送信するメッセージの詳細に入力する方法の詳細については、「送信するリソースの詳細を参照してください。

    Note

    Webhook は、localhost (ループバック) アドレスまたは特殊範囲 IPv4/IPv6 アドレスをターゲットにすることはできません。

  6. Test を選択して、サービス フック サブスクリプションをテストします。

    [アクション] ダイアログ ボックスの構成のスクリーンショット。

  7. テストが正常に完了したら、通知画面を閉じ、Action 画面で Finish を選択します。

    サービス フック サブスクリプションのテスト結果のスクリーンショット

  8. これで Webhook が設定されました。 ターゲット サービスに移動して、JSON 表現を表示します。

    JSON 表現の表示のスクリーンショット。

ヒント

Webhook をプログラムで作成することもできます。 詳細については、「 プログラムでサービス フック サブスクリプションを作成するを参照してください。

送信するリソースの詳細

Action ペインの Resource の詳細は 、送信メッセージ、送信するメッセージメッセージ、および送信する JSON ペイロードのサイズを制御します。 送信するリソースの詳細 は、送信するリソースの量を制御します。 既定値は All ですが、URL や ID などのキー フィールドのみを送信する Minimal または None を送信することもできます。

None および Minimal は、呼び出し元がメッセージまたは詳細メッセージ自体に依存しているため、リソースに関する情報をあまり必要としないシナリオで役立ちます。 NoneMinimal もセキュリティ上の理由から役立ちます。 呼び出し元は、Azure DevOps Services にコールバックし、通常のセキュリティとアクセス許可チェックを実行して、リソースの詳細を取得する必要があります。

次のサンプル JSON は、リソースに関する最小限の詳細を示しています。

   {
       "eventType": "git.push",
       ...
       "messages": {
           "text": "...",
           "html": "...",
           "markdown": "..."
       },
       "detailedMessage": {
           "text": "...",
           "html": "...",
           "markdown": "..."
       },
       "resource": {
           "id": "...",
           "url": "https://...",
           "name": "...",
           "field1:": "..."
       }
   }