次の方法で共有


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

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

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

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

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

Note

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

サンプル コンシューマー サービス

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

ヒント

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

サービス フックのしくみ

サービス フック パブリッシャーは、 一連の イベントを定義します。 サブスクリプションはイベントを リッスンして待機し、 イベント がトリガーされるタイミングの アクション を定義します。

サービス フックの図

これは、すべてのサービス フックの実装のしくみの一般的な説明です。 ここでは、拡張機能で定義されたコンシューマーと、イベントが発生したときの指定されたアクションを指定します。

拡張機能を作成する

  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"
                        }
                    }
                ]
            }
        }
    ]
}

Note

プロパティは必ず更新してください publisher

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

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

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

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

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

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

次の手順