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

Сервисы Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022

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

Подсказка

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

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

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

Типы вкладов

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

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

  • ms.vss-web.hub — страница в веб-интерфейсе
  • ms.vss-web.action — действие меню
  • ms.vss-distributed-task.task — задача сборки и выпуска

Каждое определение свойства в типе вклада указывает:

  • type — тип данных (например, string, , booleaninteger)
  • обязательный — необходимо ли указать свойство.
  • по умолчанию — необязательное значение по умолчанию

Пример типа вклада

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

{
  "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 концентратор в группе "Рабочий центр" является вкладом типа ms.vss-web.hub, а Publish Test Results задача сборки — это вклад типа ms.vss-distributed-task.task.

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

Пример вклада

Следующее объявление о вкладе концентратора в манифесте расширения добавляет концентратор с именем Explorer в группу концентратора сборки:

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

Целевые вклады

Вклад может быть направлен на один или несколько других вкладов, создавая отношение родитель-потомок. Система обнаруживает эти связи во время выполнения, чтобы определить, что нужно отрисовать. Например, вклад hub направлен на вклад hub-group так, чтобы система знала, какие центры принадлежат каким группам.

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

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

Идентификаторы вкладов

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

Полный идентификатор состоит из трех частей, разделенных точками (.):

Часть Пример
Идентификатор издателя ms
Идентификатор расширения vss-web
Идентификатор типа вклада hub

Полный идентификатор: ms.vss-web.hub

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