コントリビューション モデル
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
で使用できます。