贡献模型

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

扩展通过声明贡献类型和贡献实例向 Azure DevOps 添加功能。 贡献类型定义一种合同(属性和行为),该类型的贡献必须实现。 贡献是贡献类型的具体实例(例如,集线器或构建任务)。

小窍门

如果要启动新的 Azure DevOps 扩展,请先尝试这些维护的示例集合 -- 它们适用于当前产品版本并涵盖新式方案(例如,在拉取请求页上添加选项卡)。

如果某个示例在组织中不起作用,请将其安装到个人或测试组织中,并将扩展清单的目标 ID 和 API 版本与当前文档进行比较。有关参考和 API,请参阅:

有关详细信息,请参见:

贡献类型

贡献类型定义该类型必须遵循的属性和规则。 贡献类型可以扩展另一个贡献类型,继承其属性。

常见贡献类型包括:

  • hub
  • action
  • build-task

每个属性定义包括:

  • 属性类型(例如,字符串或布尔值)
  • 属性是否是必需的
  • 可选默认值

Example

清单中的贡献类型声明如下所示:

{
  "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": "Optional ordering value indicating the hub's position within the hub group",
          "type": "integer"
        }
      }
    }
  ]
}

参与

贡献是参与类型的实例。 例如,Queries工作中心组下的中心是属于hub类型的贡献,Publish Test Results生成任务是属于build-task类型的贡献。

所有贡献都必须指定一个类型,并为该贡献类型所需的任何属性指定值。

Example

下面是扩展清单中中心贡献声明的示例:

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

目标贡献

贡献可以 指向 一个或多个其他贡献,这将在贡献与其每个目标之间建立关系。 系统可以在运行时发现目标的贡献。 例如, 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
  • 贡献/类型标识符:hub

可以在扩展清单中使用 相对 贡献引用来引用同一扩展中的另一个贡献或贡献类型。 在这种情况下,不包括发布者和扩展 ID,ID 是一个点 .,后面跟着贡献 ID。 例如,.hub 可能会在前面提到的 vss-web 扩展中用作 ms.vss-web.hub 的快捷方式。