Поделиться через


Модель вклада

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

Расширения добавляют возможности в Azure DevOps, определяя типы и экземпляры компонентов. Тип вклада определяет контракт (его свойства и поведение), которые должен реализовывать вклад этого типа. Вклад — это конкретный экземпляр типа вклада (например, концентратор или задача сборки).

Подсказка

Если вы создаёте новое расширение Azure DevOps, попробуйте сначала использовать эти поддерживаемые образцы коллекций — они работают с текущими сборками продуктов и охватывают современные сценарии (например, добавление вкладок на страницы pull request).

Если пример не работает в вашей организации, установите его в личную или тестовую организацию и сравните целевые идентификаторы манифеста расширения и версии API с текущими документами. Справочные материалы и API см. в статье:

Дополнительные сведения можно найти здесь

Типы вкладов

Тип вклада определяет свойства и правила, которые должны соответствовать вкладу этого типа. Тип вклада может расширить другой тип вклада, наследуя его свойства.

К общим типам вкладов относятся:

  • hub
  • action
  • build-task

Каждое определение свойства включает:

  • тип свойства (например, string или boolean)
  • Является ли свойство обязательным
  • необязательное значение по умолчанию

Пример

Объявление типа вклада в манифесте выглядит следующим образом:

{
  "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.

Все вклады должны указывать тип и указывать значения для любых свойств, необходимых для этого типа вклада.

Пример

Пример того, как можно объявить вклад хаба в манифесте расширения:

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

Когда группа концентраторов визуализируется, система может запрашивать все вклады концентраторов, предназначенные для группы концентраторов, чтобы определить, какие концентраторы необходимо визуализировать.

Определение вкладов и типов

Каждый тип вклада и сам вклад должен иметь уникальный идентификатор в расширении, в котором он объявлен.

Полный идентификатор вклада включает следующие элементы, которые разделяются точкой . :

  • Идентификатор издателя
  • Идентификатор расширения
  • Идентификатор типа вклада

Например, полный идентификатор для следующего вклада: ms.vss-web.hub

  • Идентификатор издателя: ms
  • Идентификатор расширения: vss-web
  • Идентификатор вклада и типа: hub

Ссылки на относительные вклады можно использовать в манифесте расширения для ссылки на другой вклад или тип вклада в рамках этого же расширения. В этом случае идентификаторы издателя и расширения не включаются, а идентификатор — точка . , за которой следует идентификатор вклада. Например, .hub может быть использован в ранее упомянутом расширении vss-web в качестве ярлыка для ms.vss-web.hub.