コントリビューション モデル

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

拡張機能は、コントリビューションを提供し、他の拡張機能をプラグインする方法を定義することによって、システムに新しい機能を追加します。 コントリビューション型は、システムに追加できるものを定義します。 コントリビューションは、コントリビューション型の特定のインスタンスです。 たとえば、 hub Microsoft が提供するコア拡張機能によって定義されるコントリビューション型です。 Explorerビルド ハブ グループの下のハブは、種類hubの特定の貢献です。

詳細については、次の参考資料を参照してください。

投稿の種類

コントリビューション型は、その型のシステムにコントリビューションする必要があるコントラクトを定義します。 コントリビューションタイプは、別のコントリビューションタイプから拡張することもできます。 コントリビューション型の次の例では、その型のインスタンスによって設定されるプロパティを定義します。

  • hub
  • action
  • build-task

各プロパティ定義は、次の側面を指定します。

  • プロパティ型 (文字列、ブール値など)。
  • プロパティが必要かどうか
  • コントリビューションで指定されていない場合は既定値 (省略可能)。

拡張機能マニフェストでのコントリビューション型宣言の例を次に示します。

{
    ...
    "contributionTypes": [
        {
            "id": "hub",
            "name": "Web Access Hub",
            "description": "A hub that appears in the hubs menu at the top of web pages.",
            "properties": {
                "name": {
                    "description": "The text to display for the hub",
                    "type": "string",
                    "required": true
                },
                "uri": {
                    "description": "URI of the contents of the hub page",
                    "type": "string",
                    "required": true
                },
                "order": {
                    "description": "An optional ordering value which can indicate in which position to place the hub within the hub group",
                    "type": "integer"
                }
				...
            }
        }
    ]
}

貢献

コントリビューションは、コントリビューション型のインスタンスです。 たとえば、 Queries 作業ハブ グループの下のハブは型 hub のコントリビューションであり、 Publish Test Results ビルド タスクは型のコントリビューションです build-task

すべてのコントリビューションでは、型を指定し、そのコントリビューション型で必要なすべてのプロパティの値を指定する必要があります。

拡張機能マニフェストでのハブコントリビューション宣言の例を次に示します。

{
    "contributions": [
        {
            "id": "build-explorer-hub",
            "type": "ms.vss-web.hub",
            "targets": [
                ".build-hub-group"
            ],
            "properties": {
                "name": "Explorer",
                "uri": "/_build",
                "order": 22
            }
        }
    ]
}

ターゲット コントリビューション

コントリビューションは、1 つ以上の他のコントリビューションをターゲットにすることができ、コントリビューションとそのターゲットの間にリレーションシップが作成されます。 システムは、実行時にターゲットのコントリビューションを検出できます。 たとえば、 hub コントリビューション (Explorer) は特定 hub-group のコントリビューション (Build) を対象とする場合があります。

{
    "id": "build-explorer-hub",
    "type": "ms.vss-web.hub",
    "targets": [
        ".build-hub-group"
    ]
}

ハブ グループがレンダリングされると、システムは、ハブ グループを対象とするすべてのハブ コントリビューションに対してクエリを実行して、レンダリングするハブを確認できます。

コントリビューションと型を識別する

すべてのコントリビューションとコントリビューションの種類には、宣言されている拡張機能内で一意の ID が必要です。

完全なコントリビューション識別子には、ドット.で区切った次の項目が含まれます。

  • 発行元 ID
  • 拡張 ID
  • コントリビューション/タイプ ID

たとえば、次のコントリビューションの完全な識別子を指定します。 ms.vss-web.hub

  • パブリッシャー ID: ms
  • 拡張機能 ID: vss-web
  • コントリビューション/タイプ ID: hub

拡張機能マニフェスト内の相対コントリビューション参照を使用して、同じ拡張機能内の別のコントリビューションまたはコントリビューションの種類へのコントリビューションの参照を行うことができます。 この場合、発行元 ID と拡張 ID は含まれません。ID はドット . の後にコントリビューション ID が続きます。 たとえば、.hub以前にショートカットms.vss-web.hubとしてメンション拡張機能内vss-webで使用できます。