次の方法で共有


サービス フック用のカスタム コンシューマーを作成する

Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020

サービス フックを使用して、プロジェクトで発生したイベントについて Microsoft 以外のシステムに通知します。 カスタム コンシューマーは、拡張機能のマニフェストで定義されているエンドポイントに HTTP メッセージを送信します。

ヒント

新しい Azure DevOps 拡張機能を開始する場合は、まず、保守されているこれらのサンプル コレクションを試してください。現在の製品ビルドで動作し、最新のシナリオ (プル要求ページにタブを追加するなど) について説明します。

サンプルが組織で機能しない場合は、個人用またはテスト組織にインストールし、拡張機能マニフェストのターゲット ID と API バージョンを現在のドキュメントと比較します。リファレンスと API については、以下を参照してください。

この記事では、次のイベントとアクションを含む サンプル コンシューマー サービスを実装する拡張機能の開発について説明します。

  • 次のアクションをトリガーするサポートされているイベント:
    • コードのプッシュ
    • pull request 作成
    • Pull request の更新完了
  • イベントが発生したときに実行するアクションがサポートされています。
    • HTTP メッセージを送信する

この記事では、プロジェクトのホーム ディレクトリを ホームとして参照します。

コード プッシュおよびプル要求イベントの HTTP メッセージを送信するサンプル コンシューマー サービスを示す図。

詳細については、 拡張機能の GitHub リポジトリの例を参照してください。 カスタム コンシューマー拡張機能のトリガーとして使用できるサポートされているすべてのイベントの一覧については、「 イベントの種類の一覧」を参照してください。

ヒント

Azure DevOps Extension SDK を使用した拡張機能開発に関する最新のドキュメントを確認してください。

サービス フックのしくみ

サービス フック パブリッシャーは、 一連の イベントを定義します。 サブスクリプションは イベントをリッスンし、 イベント がトリガーされたときに実行される アクション を定義します。

サービス フック フローを示す図。パブリッシャーはイベントを出力し、サブスクリプションはイベントに一致し、イベントがサブスクリプションと一致するとアクションが実行されます。

次の図は、一般的なサービス フック フローを示しています。パブリッシャーはイベントを出力し、サブスクリプションはイベントに一致し、アクションは一致が発生したときに実行されます。 この記事の例では、拡張機能によってコンシューマーが実装されます。 サポートされているイベントが発生すると、コンシューマーの構成済みアクションは、拡張マニフェストで指定したエンドポイントに HTTP メッセージを送信します。

拡張機能を作成する

  1. 最初から拡張機能を作成する方法を確認します

  2. カスタム コンシューマー実装の特定のコントリビューションを基本的な マニフェスト ファイルに追加します。 コントリビューションを追加した後のマニフェストの外観の例を次に示します。

{
    "manifestVersion": 1,
    "id": "samples-service-hooks-consumer",
    "version": "0.1.2",
    "name": "Service Hooks Sample",
    "description": "A simple extension that demonstrates how to contribute a consumer service into service hooks.",
    "publisher": "fabrikam",
    "public": false,
    "icons": {
        "default": "images/logo.png"
    },
    "scopes": [],
    "files": [
        {
            "path": "images",
            "addressable": true
        }
    ],
    "content": {
        "details": {
            "path": "readme.md"
        }
    },
    "categories": [
        "Developer samples"
    ],
    "targets": [
        {
            "id": "Microsoft.VisualStudio.Services"
        }
    ],
    "contributions": [
        {
            "id": "consumer",
            "type": "ms.vss-servicehooks.consumer",
            "targets": [
                "ms.vss-servicehooks.consumers"
            ],
            "properties": {
                "id": "consumer",
                "name": "Sample Consumer",
                "description": "Sample consumer service",
                "informationUrl": "https://aka.ms/vsoextensions",
                "inputDescriptors": [
                    {
                        "id": "url",
                        "isRequired": true,
                        "name": "URL",
                        "description": "URL to post event payload to",
                        "inputMode": "textbox"
                    }
                ],
                "actions": [
                    {
                        "id": "performAction",
                        "name": "Perform action",
                        "description": "Posts a standard event payload",
                        "supportedEventTypes": [
                            "git.push",
                            "git.pullrequest.created",
                            "git.pullrequest.updated"
                        ],
                        "publishEvent": {
                            "url": "{{{url}}}",
                            "resourceDetailsToSend": "all",
                            "messagesToSend": "all",
                            "detailedMessagesToSend": "all"
                        }
                    }
                ]
            }
        }
    ]
}

publisherプロパティは忘れずに更新してください。

拡張機能のコントリビューションごとに、マニフェストによって次の項目が定義されます。

  • 貢献の種類 - この場合のコンシューマー サービス (ms.vss-servicehooks.consumer)。
  • コントリビューション ターゲット - この場合のコンシューマー サービス (ms.vss-servicehooks.consumers)。
  • 各種類のコントリビューションに固有のプロパティ。

コンシューマーには、次のプロパティがあります。

プロパティ 説明
識別子 コンシューマー サービスの一意の ID。
名前 サービス フック サブスクリプションの作成時に表示されるカスタム コンシューマーの名前。
説明 コンシューマー サービスについて説明します。
informationUrl 拡張機能に関する詳細情報を確認します。
入力ディスクリプタ コンシューマー サービスでサブスクリプションを作成しているユーザーが使用する入力。
actions 実行するアクションと、それらのアクションをトリガーするイベントについて説明します。

コンシューマーのアクションには、次のプロパティがあります。

プロパティ 説明
識別子 アクション サービスの ID。
名前 アクションの名前。
説明 アクションの詳細な説明。
サポートされるイベントタイプ このアクションを使用できるトリガーの種類の配列。 詳細については、「 イベントの種類の一覧」を参照してください
publishEvent.url HTTP メッセージを受信するエンドポイント URL。 この値は、 inputDescriptorsのトークンを使用してテンプレート化できます。ユーザーは、サブスクリプションの作成時に実際の値を提供します。
  1. 拡張機能を Azure DevOps 組織にデプロイし、テストします。

次のステップ