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


Справочник по манифесту расширения

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

У каждого расширения есть JSON-файл манифеста, который определяет основные сведения о расширении. Файл также определяет, как он может расширить и улучшить интерфейс. В этой статье показано, как создать манифест для расширения в Azure DevOps.

Совет

Ознакомьтесь с нашей новой документацией по разработке расширений с помощью пакета SDK для расширений Azure DevOps.

Создайте файл с именем vss-extension.json в корне папки расширения. Этот файл содержит обязательные атрибуты, такие как идентификатор расширения и его целевые объекты установки, где он может выполняться. Он также описывает вклад, внесенный расширением.

См. следующий пример типичного манифеста:

{
    "manifestVersion": 1,
    "id": "tools",
    "version": "0.1.0",
    "name": "Fabrikam Tools",
    "publisher": "fabrikam",
    "description": "Awesome tools to help you and your team do great things everyday.",
    "targets": [
        {
            "id": "Microsoft.VisualStudio.Services"
        }
    ],
    "icons": {
        "default": "images/fabrikam-logo.png"
    },
    "scopes": [
        "vso.work",
        "vso.code_write",
        "vso.build_execute"
    ],
    "categories": [
        "Azure Boards"
    ],
    "branding": {
        "color": "rgb(34, 34, 34)",
        "theme": "dark"
    },
    "content": {
        "details": {
            "path": "readme.md"
        },
        "license": {
            "path": "eula.md"
        }
    },
    "links": {
        "getstarted": {
            "uri": "https://www.fabrikam-fiber-inc.com/help/getstarted"
        },
        "support": {
            "uri": "https://www.fabrikam-fiber-inc.com/support"
        }
    },
    "repository": {
        "type": "git",
        "uri": "https://github.com/fabrikam-fiber-inc/myextension"
    },
    "contributions": [
        {
            "id": "showCommits",
            "type": "ms.vss-web.action",
            "description": "Adds a menu action from builds grid to show associated items.",
            "targets": [
                "ms.vss-build-web.completed-build-menu"
            ],
            "properties": {
                "title": "View associated items",
                "uri": "launch.html"
            }
        }
    ],
    "files": [
        {
            "path": "launch.html",
            "addressable": true
        },        
        {
            "path": "node_modules/vss-web-extension-sdk/lib",
            "addressable": true,
            "packagePath": "lib"
        }
    ]
}

Сведения о входных данных см. в разделе ...

Требуемые атрибуты

Требуются следующие свойства:

Имущество Описание Заметки
версия манифеста Число, соответствующее версии формата манифеста. должен иметь значение 1.
ИД Идентификатор расширения. Th ID — это строка, которая должна быть уникальной среди расширений одного издателя. Он должен начинаться с алфавитного или числового символа и содержать "A" до "Z", "a" до "z", "0" до "9" и "-" (дефис). Пример: sample-extension.
версия Строка, указывающая версию расширения. Должен быть в формате major.minor.patch, например 0.1.2 или 1.0.0. Вы также можете добавить четвертый номер для следующего формата: 0.1.2.3
имя Короткое, доступное для чтения имя расширения. Ограничено 200 символами. Пример: "Fabrikam Agile Board Extension".
издатель Идентификатор издателя. Этот идентификатор должен соответствовать идентификатору, в котором публикуется расширение. См. статью "Создание и управление издателем".
Категории Массив строк, представляющих категории, к которой принадлежит расширение. Необходимо указать по крайней мере одну категорию и не ограничивать количество категорий, которые могут быть включены. Допустимые значения: Azure Repos, , Azure BoardsAzure Pipelines, Azure Test Plansи Azure Artifacts.

Примечания:
    — Используйте версию >=0.6.3 tfx-cli, если вы публикуете расширение программным способом.
    — Если вы используете расширение "Azure DevOps Extension Tasks" для публикации, убедитесь, что его версия — >>= 1.2.8. Возможно, потребуется утвердить обновление расширения из-за недавних изменений области.
    . Ранее упомянутые категории изначально присутствуют в Visual Studio Marketplace и Azure DevOps Server 2019 & выше.
Цели Продукты и службы, поддерживаемые интеграцией или расширением. Дополнительные сведения см. в разделе целевых объектов установки. Массив объектов, где каждый объект имеет id поле, указывающее одно из следующих значений:
    - Microsoft.VisualStudio.Services (расширения, которые работают с Azure DevOps),
    - Microsoft.TeamFoundation.Server (расширение, которое работает с Azure DevOps Server),
    - Microsoft.VisualStudio.Services.Integration,
    - Microsoft.TeamFoundation.Server.Integration (интеграции, которые работают с Azure DevOps Server)

Примеры обязательных атрибутов

{
    "manifestVersion": 1,
    "id": "tools",
    "version": "0.1.0",
    "name": "Fabrikam Tools",
    "publisher": "fabrikam",
    "targets": [
        {
            "id": "Microsoft.VisualStudio.Services"
        }
    ]
}

Необязательные атрибуты

Атрибуты среды выполнения

Имущество Описание Заметки
Области действия Массив областей авторизации (строк) с разрешениями, необходимыми для расширения. Например, vso.work и vs.code_write указывают, что вашему расширению требуется доступ только для чтения к рабочим элементам и доступ на чтение и запись к исходному коду (и связанным ресурсам). Области доступа отображаются пользователю при установке расширения. Дополнительные сведения см. в полном списке областей.
Требования Массив запросов (строк) содержит список возможностей, необходимых вашему расширению. Например, указывает, api-version/3.0 что расширение использует API версии 3.0 и поэтому не может работать в старых продуктах, которые не поддерживают эту версию. Дополнительные сведения см. в полном списке требований.
baseUri (Необязательно) базовый URL-адрес для всех относительных URL-адресов, указанных вкладом расширения. Например: https://myapp.com/{{account.name}}/. Это свойство должно оставаться пустым, если содержимое вашего расширения упаковано вместе с ним.
Взносы Массив вкладов в систему.
типы вкладов Массив типов вкладов, определенных расширением
{
    "scopes": [
        "vso.work",
        "vso.code_write",
        "vso.build_execute"
    ],
    "demands": [
        "api-version/3.0"
    ],
    "contributions": [
        {
            "id": "showCommits",
            "type": "ms.vss-web.action",
            "description": "Adds a menu action from builds grid to show associated items.",
            "targets": [
                "ms.vss-build-web.completed-build-menu"
            ],
            "properties": {
                "title": "View associated items",
                "uri": "launch.html"
            }
        }
    ]
}

Атрибуты обнаружения

Следующие необязательные свойства помогают пользователям обнаруживать и узнать о расширении.

Имущество Описание Заметки
описание Несколько предложений, описывающих расширения. Ограничено 200 символами. Описание должно быть вашим расширением "краткое представление" - пару строк, чтобы описать расширение в Marketplace и чтобы люди захотели его установить. См. приведенный ниже пример
Иконки Словарь значков, представляющих расширение. Допустимые ключи: default (128x128 пикселей) типа BMP, GIF, EXIF, JPG, PNG и TIFF. Другие ключи, такие как large (512x512 пикселей), могут поддерживаться в будущем. Значение каждого ключа — путь к файлу значка в расширении
теги Массив строковых тегов, помогающие пользователям найти расширение. Примеры: agile, project management, task timerи т. д.
снимки экрана Набор изображений, которые не были включены в ваше содержимое. Снимки экрана становятся более ценными, когда они представлены в вашем контенте и должны использоваться там, чтобы создать качественную страницу сведений о рынке для вашего расширения. Используйте снимки экрана для менее важных изображений, которые не представлены в содержимом. Каждое изображение должно составлять 1366x768 пикселей. Каждый path элемент — это путь к файлу в расширении.
содержание Словарь файлов содержимого, описывающих расширение для пользователей. Каждое расширение должно содержать твердое содержимое. Вот как вы покажете пользователям, что может сделать расширение. Сделайте его содержательным, удобным для восприятия и включите снимки экрана при необходимости. Включите overview.md файл в качестве базового содержимого. Предполагается, что каждый файл находится в формате GitHub Flavored Markdown . Каждый path элемент — это путь к файлу Markdown в расширении. Допустимые ключи: details. В будущем могут поддерживаться другие ключи.
ссылки Словарь ссылок, помогающих пользователям узнать больше о расширении, получить поддержку и переместить. Допустимые ключи: getstarted — первые шаги, как настроить или использовать. learn — более глубокое содержимое, помогающее пользователям лучше понять расширение или службу. license — лицензионное соглашение конечного пользователя. privacypolicy — политика конфиденциальности для расширения. support — справка и поддержка для расширения. Значение каждого ключа — это объект с uri полем, которое является абсолютным URL-адресом ссылки.
репозитории Словарь свойств, описывающих репозиторий исходного кода для расширения Допустимые ключи: type тип репозитория. Пример: git. uri — абсолютный URL-адрес репозитория.
Значки Массив ссылок на значки метаданных, такие как TravisCI, Appveyor и другие, с утвержденных сайтов значков Допустимые ключи: href — при выборе значка пользователь переходит к ссылке. uri — абсолютный URL-адрес отображаемого изображения значка. description — Описание значка, отображаемое при наведении курсора.
фирменная символика Словарь свойств, связанных с брендом. Допустимые ключи: color — основной цвет расширения или издателя; может быть шестнадцатеричным (#ff00ff), RGB (rgb(100 200 50)) или поддерживаемыми именами цветов HTML (синий). theme — дополняет цвет; используйте темные цвета фирменной символики или свет для более светлых цветов фирменной символики.

Сделать расширение общедоступным

По умолчанию все расширения в Azure DevOps Marketplace являются частными. Они скрыты из общедоступного представления и отображаются только издателю и определенным учетным записям, к которым предоставлен доступ издателю. Если издатель проверен, вы можете сделать расширение общедоступным, задав Public флаг в манифесте расширения:

{
    "galleryFlags": [
        "Public"
    ]
}            

Или сделайте так:

{
    "public": true
}            

Дополнительные сведения см. в разделе "Package/Publish/Install".

Пометка расширения, которое должно быть в предварительном просмотре

Если ваше расширение готово для пользователей в магазине, но вы всё ещё устраняете некоторые ошибки или добавляете функции, вы можете пометить его как preview:

{
    "galleryFlags": [
        "Preview"
    ]
}            

Пометить расширение как платную предварительную версию

Если вы планируете продать расширение в Marketplace, пометьте его как платную предварительную версию. Расширение, помеченное бесплатно, не может быть изменено на платную.

{
    "galleryFlags": [
        "Paid",
        "Preview"
    ]
}            

Пометить расширение как платное

Если вы хотите продать расширение на Marketplace, вы можете пометить его флагом Paid и тегом __BYOLENFORCED (начинается с двух подчеркиваний).

{
    "galleryFlags": [
        "Paid"        
    ],
     "tags": [        
        "__BYOLENFORCED"
    ]
}            

Paid флаг и __BYOLENFORCED тег должны присутствовать, чтобы пометить расширение как платное в marketplace. Перенос собственной лицензии (BYOL) означает, что издатель расширения предоставляет механизм выставления счетов и лицензирования для расширения, поскольку Microsoft не предоставляет этот механизм для расширений Azure DevOps. Все платные расширения необходимы для определения политики конфиденциальности, политики поддержки и лицензионного соглашения конечного пользователя. Издатели должны предоставить содержимое для вкладки цен в Marketplace следующим образом:

{
    "content": {
        "details": {
            "path": "overview.md"
        }, 
        "pricing": {
            "path": "pricing.md"
        }
    }
}          

Кроме того, необходимо добавить новый раздел в манифест расширения, чтобы переопределить платное лицензирование. В будущем мы удалим проверку платной лицензии и больше не будем требовать переопределения. Теперь убедитесь, что расширение отображается должным образом. Каждое переопределение состоит из "ID" и "поведения". Убедитесь, что "ID" совпадает с ID вкладов, определённых в манифесте.

"licensing": {

      "overrides": [

        { "id": "my-hub", "behavior": " AlwaysInclude" }
      ]
    }

Если платное расширение BYOL предлагает пробный период (рекомендуется), можно указать длину пробной версии в днях:

{
    "galleryproperties": {
        "trialDays": "30"
    } 
}          

Примечание.

Если вы хотите работать с Azure DevOps, но не хотите отображать опцию "Скачать" для вашего расширения, добавьте тег (начинается с двух подчеркиваний) в манифест расширения. Если вы перемещаете расширение из ранее предлагаемого выставления счетов и лицензирования от Майкрософт к модели BYOL, обратитесь к нам, чтобы получить дальнейшие инструкции.

Пример дополнительных свойств

{
    "description": "Awesome tools to help you and your team do great things everyday.",
    "icons": {
        "default": "images/fabrikam-logo.png"
    },
    "categories": [
        "Plan and track"
    ],
    "tags": [
        "working",
        "people person",
        "search"
    ],
    "content": {
        "details": {
            "path": "overview.md"
        },
        "license": {
            "path": "license-terms.md"
        }
    },
    "links": {
        "home": {
            "uri": "https://www.fabrikam-fiber-inc.com"
        },
        "getstarted": {
            "uri": "https://www.fabrikam-fiber-inc.com/help/getstarted"
        },
        "learn": {
            "uri": "https://www.fabrikam-fiber-inc.com/features"
        },
        "support": {
            "uri": "https://www.fabrikam-fiber-inc.com/support"
        },
        "repository": {
            "uri": "https://github.com/fabrikam-fiber-inc/tools"
        },
        "issues": {
            "uri": "https://github.com/fabrikam-fiber-inc/tools/issues"
        }
    },
    "repository": {
        "type": "git",
        "uri": "https://github.com/fabrikam-fiber-inc/tools"
    },
    "badges": [
        {
            "href": "https://travis.ci/fabrikam-fiber-inc/myextension",
            "uri": "https://travis.ci/fabrikam-fiber-inc/myextension.svg?branch=master",
            "description": "TravisCI build for the project"
        },
        {
            "href": "https://ci.appveyor.com/projects/fabrikam-fiber-inc/myextension",
            "uri": "https://ci.appveyor.com/api/projects/status/vlg2sgs2y7tsdxpj4c?svg=true",
            "description": "AppVeyor build for the project"
        }
    ],
    "branding": {
        "color": "rgb(34, 34, 34)",
        "theme": "dark"
    },
    "screenshots": [
        {
            "path": "screenshots/screen1.png"
        },
        {
            "path": "screenshots/screen2.png"
        }
    ]
}

Пример страницы сведений

  • 1 — описание
  • 2 — значок
  • 3 — категории
  • 4 — снимки экрана
  • 5 — содержимое (подробности)
  • 6 — ссылки
  • 7 — фирменная символика

карта

Marketplace Q и A — свойство CustomerQnASupport

Все расширения на Visual Studio Marketplace содержат раздел "Вопросы и ответы" (Q & A), позволяющий публичные беседы один-на-один между пользователями расширений и издателями. Издатели могут выбирать между вопросами и ответами на Marketplace, задачами GitHub или настраиваемым URL-адресом для вопросов и ответов. Вы можете отключить Q и A в Marketplace с помощью CustomerQnASupport свойства в манифесте.

Интерфейс по умолчанию (изменения манифеста не требуются)

  • Для расширений с репозиторием GitHub Marketplace перенаправляет пользователей из раздела Q&A на связанные проблемы GitHub.
  • Для расширений без репозитория GitHub включена функция Q&A Marketplace.

Для работы с одним из вариантов по умолчанию используйте CustomerQnASupport свойство в манифесте.

{
    "CustomerQnASupport": {
        "enablemarketplaceqna": true,
        "url": "http://uservoice.visualstudio.com"
    } 
}

Свойства

Свойства раздела "Вопросы и поддержка клиента":

  • enablemarketplaceqna — логическое поле, установленное в true для торговой площадки или настраиваемых вопросов и ответов; false для отключения вопросов и ответов.
  • URL-адрес — строка для настраиваемого Q&A

Примеры использования поддержки Q и A

Пример: расширение с помощью настраиваемой системы вопросов и ответов

{
     "CustomerQnASupport": {
        "enablemarketplaceqna":"true",
        "url": "http://uservoice.visualstudio.com"
    } 
}

Пример: расширение с репозиторием GitHub, но с использованием вопросов и ответов Marketplace Q & A вместо вопросов GitHub.

{
     "CustomerQnASupport": {
        "enablemarketplaceqna":"true"
    } 
}

Пример: расширение, отключающее раздел Q и A

{
     "CustomerQnASupport": {
        "enablemarketplaceqna":"false"
    } 
}

Сферы

В расширении можно определить одну или несколько областей. Эти права доступа определяют ресурсы, к которым может получить доступ расширение, и операции, которые разрешено выполнять с этими ресурсами. Области, указанные в манифесте расширения, — это области, заданные для маркеров доступа, выданных вашему расширению. Дополнительные сведения см. в разделе "Проверка подлинности" и "Безопасность".

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

Поддерживаемые области

Категория Область Имя Высокий уровень привилегий Описание Наследует от
Расширенная безопасность vso.advsec Расширенная безопасность (чтение) Да Предоставляет возможность чтения оповещений, экземпляров результатов и экземпляров результатов анализа.
vso.advsec_write Расширенная безопасность (чтение и запись) Да Предоставляет возможность отправлять анализы в засечках. vso.advsec
vso.advsec_manage Расширенная безопасность (чтение, запись и управление) Да Предоставляет возможность отправлять анализы в засечках. vso.advsec_write
Пулы агентов vso.agentpools Пулы агентов (чтение) Предоставляет возможность просматривать: задачи, пулы, очереди, агентов, а также выполняющиеся или недавно завершенные задания агентов.
vso.agentpools_manage Пулы агентов (чтение и управление ими) Да Предоставляет возможность управлять пулами, очередями и агентами. vso.agentpools
vso.environment_manage Среда (чтение и управление) Да Предоставляет возможность управлять пулами, очередями, агентами и окружениями. vso.agentpools_manage
Аналитика vso.analytics Аналитика (чтение) Предоставляет возможность запрашивать данные аналитики.
Auditing vso.auditlog Журнал аудита (чтение) Предоставляет пользователям возможность читать журнал аудита.
vso.auditstreams_manage Аудит потоков (чтение) Да Предоставляет пользователям возможность управлять потоками аудита. vso.auditlog
Build vso.build Сборка (чтение) Предоставляет возможность доступа к артефактам сборки, включая результаты сборки, определения и запросы, а также возможность получать уведомления о событиях сборки с помощью хуков сервиса. vso.hooks_write
vso.build_execute Компиляция (чтение и выполнение) Да Предоставляет возможность доступа к артефактам сборки, включая результаты сборки, определения и запросы. Кроме того, предоставляет возможность очереди сборки, обновления свойств сборки и получения уведомлений о событиях сборки с помощью перехватчиков служб. vso.build
Code vso.code Код (чтение) Предоставляет возможность читать исходный код и метаданные о коммитах, наборах изменений, ветвях и других артефактах управления версиями. Также предоставляет возможность искать код и получать уведомления о событиях контроля версий через сервисные хуки. vso.hooks_write
vso.code_write Код (чтение и запись) Да Предоставляет возможность читать, обновлять и удалять исходный код и получать метаданные о фиксациях, изменениях, ветвях и других артефактах управления версиями. Кроме того, предоставляет возможность создавать запросы на вытягивание и просматривать код и получать уведомления о событиях управления версиями с помощью перехватчиков служб. vso.code
vso.code_manage Код (чтение, запись и управление) Да Предоставляет возможность читать, обновлять и удалять исходный код, получать доступ к метаданным о фиксациях, изменениях, ветвях и других артефактах управления версиями. Кроме того, предоставляет возможность создавать и управлять репозиториями кода, создавать и управлять pull-реквестами и обзорами кода, а также получать уведомления о событиях системы управления версиями через вебхуки. vso.code_write
vso.code_full Код (полный) Да Предоставляет полный доступ к исходному коду, метаданным о фиксациях, наборах изменений, ветвях и других артефактах управления версиями. Кроме того, предоставляет возможность создавать репозитории кода и управлять ими, создавать запросы на вытягивание и проверки кода и получать уведомления о событиях управления версиями с помощью перехватчиков служб. Также включает ограниченную поддержку клиентских API OM. vso.code_manage
vso.code_status Код (состояние) Предоставляет возможность чтения и записи фиксации и записи состояния запроса на вытягивание.
Подключенный сервер vso.connected_server Подключенный сервер Предоставляет возможность доступа к конечным точкам, необходимым с локального подключенного сервера.
Объемы обслуживания vso.entitlements Права (чтение) Предоставляет доступ только для чтения к конечным точкам прав лицензирования для получения прав учетной записи.
vso.memberentitlementmanagement Управление правами участников (чтение) Предоставляет возможность читать пользователей, их лицензии и проекты и расширения, к которые они могут получить доступ.
vso.memberentitlementmanagement_write Управление правами участников (запись) Да Предоставляет возможность управлять пользователями и их лицензиями, а также проектами и расширениями, к которым они могут получить доступ. vso.memberentitlementmanagement
Extensions vso.extension Расширения (чтение) Предоставляет возможность чтения установленных расширений. vso.profile
vso.extension_manage Расширения (чтение и управление) Да Предоставляет возможность устанавливать, удалять и выполнять другие административные действия в установленных расширениях. vso.extension
vso.extension.data Данные расширения (чтение) Предоставляет возможность считывать данные (параметры и документы), хранящиеся установленными расширениями. vso.profile
vso.extension.data_write Данные расширения (чтение и запись) Предоставляет возможность чтения и записи данных (параметров и документов), хранящихся установленными расширениями. vso.extension.data
Подключения GitHub vso.githubconnections Подключения GitHub (чтение) Предоставляет возможность читать данные о подключениях и репозиториях GitHub.
vso.githubconnections_manage Подключения GitHub (чтение и управление) Да Предоставляет возможность считывания подключений GitHub и данных репозиториев GitHub и управления ими. vso.githubconnections
Граф и удостоверение vso.graph Граф (чтение) Предоставляет возможность читать сведения о пользователях, группах, областях и членстве в группах.
vso.graph_manage Граф (управление) Да Предоставляет возможность читать сведения о членстве пользователей, групп, областей и групп, добавлять пользователей и группы и управлять членством в группах. vso.graph
vso.identity Идентичность (просмотр) Предоставляет возможность читать идентичности и группы.
vso.identity_manage Идентификация (управление) Да Предоставляет возможность чтения, записи и управления идентичностями и группами. vso.identity
Группа компьютеров vso.machinegroup_manage Группа развертывания (читать, управлять) Да Предоставляет возможность управлять пулами групп развертывания и агентов. vso.agentpools_manage
Рынок vso.gallery Рынок Предоставляет читательский доступ к общедоступным и частным объектам и издателям. vso.profile
vso.gallery_acquire Marketplace (приобретение) Предоставляет доступ на чтение и возможность приобретения элементов. vso.gallery
vso.gallery_publish Marketplace (публикация) Да Предоставляет доступ для чтения, а также возможность загружать, обновлять и предоставлять общий доступ к элементам. vso.gallery
vso.gallery_manage Marketplace (управление) Да Предоставляет доступ для чтения и возможность публиковать и управлять элементами и издательскими ресурсами. vso.gallery_publish
Notifications vso.notification Уведомления (прочитанные) Предоставляет доступ на чтение к подпискам и метаданным событий, включая отфильтрованные значения полей. vso.profile
vso.notification_write Уведомления (запись) Предоставляет доступ на чтение и запись к подпискам и доступ на чтение к метаданным событий, включая отфильтрованные значения полей. vso.notification
vso.notification_manage Уведомления (управление) Предоставляет доступ на чтение, запись и управление подписками и доступ на чтение к метаданным событий, включая значения поля, допускающие фильтрацию. vso.notification_write
vso.notification_diagnostics Уведомления (диагностика) Предоставляет доступ к журналам диагностики, связанным с уведомлениями, и предоставляет возможность включить диагностику для отдельных подписок. vso.notification
Упаковка vso.packaging Упаковка (прочтение) Предоставляет доступ к чтению каналов и пакетов. vso.profile
vso.packaging_write Упаковка (чтение и запись) Да Предоставляет возможность создавать и читать RSS-каналы и пакеты. vso.packaging
vso.packaging_manage Упаковка (чтение, запись и управление) Да Предоставляет возможность создавать, читать, обновлять и удалять ленты и пакеты. vso.packaging_write
Ресурсы потока vso.pipelineresources_use Ресурсы конвейера (использование) Да Предоставляет возможность утвердить запрос конвейера на использование защищенного ресурса: пул агентов, среда, очередь, репозиторий, безопасные файлы, подключение к службе и группа переменных.
vso.pipelineresources_manage Ресурсы конвейера (использование и управление ими) Да Предоставляет возможность управлять защищенным ресурсом или запросом конвейера для использования защищенного ресурса: пул агентов, среда, очередь, репозиторий, безопасные файлы, подключение к службе и группа переменных. vso.pipelineresources_use
Проект и команда vso.project Проект и команда (ознакомление) Предоставляет возможность читать проекты и команды.
vso.project_write Проект и команда (доступ на чтение и запись) Предоставляет возможность читать и обновлять проекты и команды. vso.project
vso.project_manage Проект и команда (чтение, запись и управление ими) Да Предоставляет возможность создавать, читать, обновлять и удалять проекты и команды. vso.project_write
Выпуск vso.release Релиз (чтение данных) Предоставляет возможность считывать артефакты выпуска, включая выпуски, определения выпусков и среду выпуска. vso.profile
vso.release_execute Выпуск (чтение, запись и выполнение) Да Предоставляет возможность считывания и обновления артефактов выпуска, включая выпуски, определения выпуска и среду выпуска. Кроме того, предоставляет возможность очереди нового выпуска. vso.release
vso.release_manage Выпуск (чтение, запись, выполнение и управление ими) Да Предоставляет возможность читать, обновлять и удалять артефакты выпуска, включая выпуски, определения выпусков и среду выпуска. Кроме того, предоставляет возможность очереди и утверждения нового выпуска. vso.release_execute
Безопасные файлы vso.securefiles_read Безопасные файлы (чтение) Да Предоставляет возможность чтения защищенных файлов.
vso.securefiles_write Безопасные файлы (чтение и создание) Да Предоставляет возможность чтения и создания защищенных файлов. vso.securefiles_read
vso.securefiles_manage Безопасные файлы (чтение, создание и управление ими) Да Предоставляет возможность читать, создавать и управлять защищенными файлами. vso.securefiles_write
Безопасность vso.security_manage Безопасность (управление) Да Предоставляет возможность чтения, записи и управления разрешениями безопасности.
Служебные подключения vso.serviceendpoint Конечные точки службы (чтение) Предоставляет возможность чтения конечных точек службы. vso.profile
vso.serviceendpoint_query Конечные точки службы (чтение и запрос) Предоставляет возможность чтения и запроса конечных точек службы. vso.serviceendpoint
vso.serviceendpoint_manage Конечные точки службы (чтение, запрос и управление) Да Предоставляет возможность чтения, запроса и управления конечными точками службы. vso.serviceendpoint_query
Механизмы сервисных подключений vso.hooks Перехватчики служб (чтение) Предоставляет возможность чтения подписок и метаданных службы, включая поддерживаемые события, потребителя и действия. (Больше не общедоступна.) vso.profile
vso.hooks_write Служебные хуки (чтение и запись) Предоставляет возможность создавать и обновлять подписки на вебхуки службы и читать метаданные, включая поддерживаемые события, пользователи и действия. (Больше не общедоступна.) vso.hooks
vso.hooks_interact Веб-хуки сервисов (взаимодействие) Предоставляет возможность взаимодействовать и выполнять действия на события, полученные через служебные хуки. (Больше не общедоступна.) vso.profile
Settings vso.settings Параметры (чтение) Предоставляет возможность чтения параметров.
vso.settings_write Параметры (чтение и запись) Предоставляет возможность чтения и записи параметров. vso.settings
Символы vso.symbols Чтение символов Предоставляет возможность считывать символы. vso.profile
vso.symbols_write Символы (чтение и запись) Предоставляет возможность чтения и записи символов. vso.symbols
vso.symbols_manage Символы (чтение, запись и управление ими) Предоставляет возможность чтения, записи и управления символами. vso.symbols_write
Группы задач vso.taskgroups_read Группы задач (чтение) Предоставляет доступ к чтению групп задач.
vso.taskgroups_write Группы задач (чтение и создание) Предоставляет возможность читать и создавать группы задач. vso.taskgroups_read
vso.taskgroups_manage Группы задач (чтение, создание и управление ими) Да Предоставляет возможность читать, создавать и управлять группами задач. vso.taskgroups_write
Панель мониторинга группы vso.dashboards Панели управления команды (чтение) Предоставляет возможность считывать сведения о панели мониторинга команды.
vso.dashboards_manage Панели мониторинга группы (управление) Предоставляет возможность управлять сведениями панели мониторинга группы. vso.dashboards
Управление тестами vso.test Управление тестами (просмотр) Предоставляет возможность читать тестовые планы, варианты, результаты и другие артефакты, связанные с управлением тестами. vso.profile
vso.test_write Управление тестами (чтение и запись) Предоставляет возможность читать, создавать и обновлять тестовые планы, варианты, результаты и другие артефакты, связанные с управлением тестами. vso.test
Threads vso.threads_full Потоки PR Предоставляет возможность читать и писать в ветках комментариев pull request.
Tokens vso.tokens Делегированные маркеры авторизации Да Предоставляет пользователям возможность управлять делегированными маркерами авторизации.
vso.tokenadministration Администрирование токенов Да Предоставляет возможность управления (просмотром и отменой) существующих маркеров администраторам организации.
Профиль пользователя vso.profile Профиль пользователя (для чтения) Предоставляет возможность читать профиль, учетные записи, коллекции, проекты, команды и другие артефакты организации верхнего уровня.
vso.profile_write Профиль пользователя (написание) Предоставляет возможность записи в профиль. vso.profile
Группы переменных vso.variablegroups_read Группы переменных (чтение) Предоставляет возможность чтения групп переменных.
vso.variablegroups_write Группы переменных (чтение и создание) Предоставляет возможность считывания и создания групп переменных. vso.variablegroups_read
vso.variablegroups_manage Группы переменных (чтение, создание и управление ими) Да Предоставляет возможность чтения, создания и управления группами переменных. vso.variablegroups_write
Вики vso.wiki Вики (чтение) Предоставляет возможность читать вики-страницы, вики-страницы и вики-вики-вложения. Кроме того, предоставляет возможность поиска на вики-страниц.
vso.wiki_write Вики (для чтения и записи) Предоставляет возможность читать, создавать и обновлять вики-страницы, вики-страницы и вики-вложения. vso.wiki
Элементы работы vso.work Элементы работы (чтение) Предоставляет возможность считывать рабочие элементы, запросы, доски, области и пути итерации, а также другие метаданные, связанные с отслеживанием рабочих элементов. Кроме того, предоставляет возможность выполнять запросы, выполнять поиск рабочих элементов и получать уведомления о событиях рабочих элементов с помощью перехватчиков служб. vso.hooks_write
vso.work_write Рабочие элементы (чтение и запись) Предоставляет возможность читать, создавать и обновлять рабочие элементы и запросы, метаданные доски обновления, области чтения и итерации путей и других метаданных, связанных с отслеживанием рабочих элементов, выполнять запросы и получать уведомления о событиях рабочих элементов с помощью перехватчиков служб. vso.work
vso.work_full Рабочие элементы (полные) Предоставляет полный доступ к рабочим элементам, запросам, невыполненной работе, планам и метаданным отслеживания рабочих элементов. Кроме того, предоставляет возможность получать уведомления о событиях рабочих элементов с помощью перехватчиков служб. vso.work_write
Олицетворение пользователя user_impersonation Олицетворение пользователя Да Предоставляет полный доступ к REST API Visual Studio Team Services. Запрос или согласие этой области с осторожностью, так как это очень мощно.

Изменение области опубликованного расширения

Область опубликованного расширения можно изменить. Если вы ранее установили расширение (и авторизовали предыдущий набор областей), авторизуйте новые области, прежде чем обновить до самой последней версии.

В разделе "Требуется действие" центра параметров расширения показано, требуют ли какие-либо установленные расширения авторизации.

изменение области

Затем администратор может просмотреть и авторизовать новый набор областей:

Диалоговое окно

Целевые объекты установки

Как подразумевает имя, целевые объекты установки определяют продукты и службы, где можно установить расширение. Microsoft.VisualStudio.Services является наиболее распространенным целевым объектом установки и указывает, что расширение можно установить в Azure DevOps.

Целевые объекты установки для расширения или интеграции указываются с помощью targets поля в манифесте.

Поддерживаемые идентификаторы расширений:

  • Microsoft.VisualStudio.Services.Cloud: устанавливается в Azure DevOps Services
  • Microsoft.TeamFoundation.Server: устанавливается в Azure DevOps Server
  • Microsoft.VisualStudio.Services: устанавливается в обе системы. Ярлык для Microsoft.VisualStudio.Services.Cloud и Microsoft.TeamFoundation.Server версии [14.2,)

Поддерживаемые идентификаторы для интеграций:

  • Microsoft.VisualStudio.Services.Cloud.Integration: интегрируется с Azure DevOps Services
  • Microsoft.TeamFoundation.Server.Integration: интегрируется с Azure DevOps Server
  • Microsoft.VisualStudio.Services.Integration: интегрируется с обоими. Ярлык для Microsoft.VisualStudio.Services.Cloud.Integration и Microsoft.TeamFoundation.Server.Integration

Дополнительные сведения см. в разделе "Точки расширяемости".

Примеры целевых объектов установки

Пример. Расширение, которое работает с Azure DevOps

{
    "targets": [
        {
            "id": "Microsoft.VisualStudio.Services"
        }
    ]
}

Пример. Расширение, которое работает только с Azure DevOps Services

{
    "targets": [
        {
            "id": "Microsoft.VisualStudio.Services.Cloud"
        }
    ]
}

Целевые объекты установки также можно использовать в манифесте интеграции. Например, продукты, приложения или инструменты, с которыми работают, но не устанавливайте их в Azure DevOps.

Пример. Интеграция, которая работает с Azure DevOps

{
    "targets": [
        {
            "id": "Microsoft.VisualStudio.Services.Integration"
        }
    ]
}

Пример. Интеграция, которая работает только с Azure DevOps Server

{
    "targets": [
        {
            "id": "Microsoft.TeamFoundation.Server.Integration"
        }
    ]
}

Целевые версии установки

Некоторые идентификаторы целевых объектов установки, например Microsoft.TeamFoundation.Server и Microsoft.TeamFoundation.Server.Integrationподдерживают необязательный диапазон версий. Этот необязательный диапазон версий дополнительно объясняет поддерживаемые выпуски расширения или интеграции.

Версия или диапазон версий указывается через поле version в объекте назначения установки. Это значение может быть следующим:

  • Конкретная версия, например: 15.0 (только RTM 2017)
  • Диапазон поддерживаемых версий, например: [14.0) (2015 RTM и более поздние версии), [14.3,15.1] (обновление 3 для 2015 года вплоть до обновления 1 для 2017 года). Значения диапазона уточнены с помощью:
    • [: минимальная версия включительно
    • ]: максимальная версия включительно
    • (: минимальная версия эксклюзивная
    • ): максимальная версия эксклюзивная

Номера версий для Azure DevOps Server:

Выпуск Выпуски Версия
2010 Все выпуски 10.0
2012 Все выпуски 11,0
2013 RTM (выпуск к производству) и обновления 12.0, 12.1, 12.2, 12.3, 12.4
2015 RTM (выпуск к производству) и обновления 14.0, 14.1, 14.2, 14.3
2017 RTM (выпуск к производству) и обновления 15.0, 15.1
2018 RTM (выпуск к производству) и обновления 16,0
2019 RTM (выпуск к производству) и обновления 17,0
2020 RTM (выпуск к производству) и обновления 18,0

Примеры, показывающие версии

Пример. Расширение, которое работает с Azure DevOps

{
    "targets": [
        {
            "id": "Microsoft.VisualStudio.Services.Cloud"
        },
        {
            "id": "Microsoft.TeamFoundation.Server",
            "version": "[15.0,)"
        }
    ]
}

Ярлыки

Microsoft.VisualStudio.Services — это ярлык для Azure DevOps.

{
    "targets": [
        {
            "id": "Microsoft.VisualStudio.Services"
        }
    ]
}

эквивалентно:

{
    "targets": [
        {
            "id": "Microsoft.VisualStudio.Services.Cloud"
        },
        {
            "id": "Microsoft.TeamFoundation.Server",
            "version": "[14.2,)"
        }
    ]
}

Использование целей установки и требований

Целевые объекты установки и требования используются вместе для предоставления пользователям правильного представления продуктов и служб, с которыми совместимо расширение или интеграция. Например, указание целевого Microsoft.VisualStudio.Services объекта установки с требованием api-version/3.0 означает, что расширение работает с Azure DevOps.

Совет

Дополнительные сведения о REST API см. в Справочнике по REST API.

Пример. Расширение, использующее API версии 3.0

{
    "targets": [
        {
            "id": "Microsoft.VisualStudio.Services"
        }
    ],
    "demands": [
        "api-version/3.0"
    ]
}

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

  1. Microsoft.VisualStudio.Services.Cloud
  2. Microsoft.TeamFoundation.ServerВерсия: [15.0,)

Пример. Интеграция, использующая API версии 2.0

{
    "targets": [
        {
            "id": "Microsoft.VisualStudio.Services.Integration"
        }
    ],
    "demands": [
        "api-version/2.0"
    ]
}

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

  1. Microsoft.VisualStudio.Services.Cloud.Integration
  2. Microsoft.TeamFoundation.Server.IntegrationВерсия: [14.0,)

Требования

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

Запросы используются Visual Studio Marketplace для перечисления продуктов и сред, с которыми совместимо расширение, что помогает клиентам понять, работает ли расширение с их версией Azure DevOps, например.

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

{
    "demands": [
        "api-version/3.0",
        "contribution/ms.vss-dashboards-web.widget-catalog"
    ]
}

В этом примере расширение требует версии 3.0 API, что означает, что его можно установить только в Azure DevOps. Кроме того, перед установкой вашего расширения необходимо установить (и включить) в коллекции расширение ms.vss-dashboards-web (и его вклад widget-catalog).

Поддерживаемые требования

Тип Описание Проверено при публикации? Проверено при установке?
environment/cloud Требуется выполнение в облачной среде Да Да
environment/onprem Требуется выполнение в локальной среде Да Да
api-version/{version} Требуется определенная версия API (минимальная) Нет Да
extension/{id} Требуется установить или включить определенное расширение. Нет Да
contribution/{id} Необходимо, чтобы определенный вклад был доступен Нет Да
contributionType/{id} Требуется, чтобы определенный тип вклада был доступен Нет Да

Примечание.

  • Используйте environment/cloud и environment/onprem только в том случае, если ваше расширение имеет топологические требования, которые необходимо выполнять в данной конкретной среде.
  • extension, contribution, и contributionType требования оцениваются во время установки и требуют, чтобы указанное расширение уже было установлено и включено в организации или коллекции.

Файлы

В files этом разделе вы ссылаетесь на все файлы, которые вы хотите включить в расширение. Можно добавить как папки, так и отдельные файлы:

{
    "files": [
        {
            "path": "hello-world.html", "addressable": true
        },
        {
            "path": "scripts", "addressable": true
        },
        {
            "path": "images/logo.png", "addressable": true, "packagePath": "/"
        }
    ]
}

Свойства

Свойства раздела "Файлы":

  • путь к ресурсу на диске, который может относиться к корневому каталогу.
  • адресуемый — (необязательно) Установите true, если вы хотите, чтобы файл был URL-адресуемым. По умолчанию false.
  • packagePath — (необязательно) Путь к ресурсу в пакете. По умолчанию относительный путь на диске из корневого каталога.
  • contentType — (необязательно) тип MIME файла. По умолчанию выбирается на основе лучшего предположения, исходя из расширения файлов и настроек ОС.
  • assetType — (необязательно) Укажите значение атрибута Type записи ресурса в манифесте VSIX. Также может быть массив строк, в этом случае для этого файла добавляются несколько записей активов. По умолчанию используется packagePath.
  • lang — (необязательно) Язык этого ресурса. Локализованные файлы обслуживаются на основе заголовка Accept-Language. Оставьте пустым, чтобы указать, что этот файл на языке по умолчанию (или резервном). Локализованные версии одного и того же файла должны иметь одинаковый тип ресурса.

Участие в проекте

Каждая запись вклада имеет следующие свойства:

  • id — идентификатор ссылки (строка) для вклада. Сделайте каждый идентификатор вклада уникальным в пределах расширения. Смотрите ссылки на вклады и типы.
  • тип — идентификатор contributionType данного вклада.
  • description — (необязательно) Строка, описывающая предоставленный вклад.
  • цели — массив идентификаторов вкладов, на которые направлен этот вклад (в который вносятся средства). См. статью "Целевые вклады".
  • properties — (необязательно) Объект, содержащий свойства для вклада, как определено в типе вклада.

Дополнительные сведения см. в обзоре модели вклада.

Типы вкладов

Каждая запись вклада имеет следующие свойства:

  • id — идентификатор ссылки (строка) для типа вклада. Сделайте каждый идентификатор типа вклада уникальным в расширении. Смотрите ссылки на вклады и типы.
  • name — понятное имя типа вклада.
  • description — (необязательно) Строка, описывающая более подробное описание типа вклада.
  • properties — (необязательно) Словарь, который сопоставляет имена свойств с описаниями свойств. Эти свойства описывают обязательные и необязательные свойства, которые могут использовать вклады этого типа.

Описания свойств имеют следующие свойства:

  • description — (необязательно) Строка, описывающая, для чего используется свойство.
  • обязательный — логическое значение, которое, если истинно, указывает, что свойство является обязательным для всех вкладов этого типа.
  • тип значения, которое может принимать свойство, например, строка, URI, GUID, логическое значение, целое число, double, dateTime, массив или объект.

Дополнительные сведения см. в обзоре модели вклада.

Ссылка на взносы и типы

Используйте уникальные идентификаторы для ссылки на вклады и типы вкладов. Ссылайтесь на типы с помощью свойства type, и на другие вклады с помощью свойства targets.

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

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

Некоторые внесения действуют как контейнеры, на которые ориентированы другие внесения.

  • Вклад в концентратор может быть предназначен для групп концентраторов. При отрисовке страницы в веб-интерфейсе отображаются все материалы центров, предназначенные для выбранной группы хабов. Группы концентраторов нацелены на коллекцию групп концентраторов, которая определяет набор групп концентраторов, которые отображаются в заданной области навигации, например страницы администрирования уровня проекта.
  • Различные типы вкладов могут быть нацелены на меню: действие, гиперссылка-действие и поставщик действий. Действия и гиперссылки предоставляют отдельные пункты меню. Поставщик действий может предоставлять несколько динамических элементов меню. Для данного меню элементы агрегируются из всех вкладов (любого из этих типов), которые нацелены на данное конкретное меню.

Добавление значка узла

Дополнительные сведения о добавлении значка в хаб см. в руководстве по иконкам хаба.

Поддерживаемые службы значков

Marketplace поддерживает только значки из следующих доверенных служб:

  • api.travis-ci.org/
  • badge.fury.io/
  • badges.frapsoft.com/
  • badges.gitter.im/
  • badges.greenkeeper.io/
  • cdn.travis-ci.org/
  • ci.appveyor.com/
  • codeclimate.com/
  • codecov.io/
  • coveralls.io/
  • david-dm.org/
  • gemnasium.com/
  • img.shields.io/
  • isitmaintained.com/
  • marketplace.visualstudio.com/
  • snyk.io/
  • travis-ci.com/
  • travis-ci.org/
  • vsmarketplacebadges.dev/
  • bithound.io/
  • deepscan.io/
  • githost.io/
  • gitlab.com/
  • opencollective.co/

Примечание.

Замените vsmarketplacebadge.apphb.com на vsmarketplacebadges.dev.

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

Пример манифеста

Следующее расширение добавляет действие в контекстное меню завершённых сборок и хаб в группу хабов сборки.

{
    "manifestVersion": 1,
    "id": "tools",
    "version": "0.1.0",
    "name": "Fabrikam Tools",
    "publisher": "fabrikam",
    "description": "Awesome tools to help you and your team do great things everyday.",
    "targets": [
        {
            "id": "Microsoft.VisualStudio.Services"
        }
    ],
    "demands": [
        "api-version/3.0"
    ],
    "icons": {
        "default": "images/fabrikam-logo.png"
    },
    "scopes": [
        "vso.work",
        "vso.code_write"
    ],
    "categories": [
        "Plan and track"
    ],
    "tags": [
        "working",
        "people person",
        "search"
    ],
    "branding": {
        "color": "rgb(34, 34, 34)",
        "theme": "dark"
    },
    "screenshots": [
        {
            "path": "screenshots/screen1.png"
        },
        {
            "path": "screenshots/screen2.png"
        }
    ],
    "content": {
        "details": {
            "path": "overview.md"
        },
        "license": {
            "path": "eula.md"
        }
    },
    "links": {
        "home": {
            "uri": "https://www.fabrikam-fiber-inc.com"
        },
        "getstarted": {
            "uri": "https://www.fabrikam-fiber-inc.com/help/getstarted"
        },
        "learn": {
            "uri": "https://www.fabrikam-fiber-inc.com/features"
        },
        "support": {
            "uri": "https://www.fabrikam-fiber-inc.com/support"
        },
        "repository": {
            "uri": "https://github.com/fabrikam-fiber-inc/tools"
        },
        "issues": {
            "uri": "https://github.com/fabrikam-fiber-inc/tools/issues"
        }
    },
    "repository": {
        "type": "git",
        "uri": "https://github.com/fabrikam-fiber-inc/myextension"
    },
    "badges": [
        {
            "href": "https://travis.ci/fabrikam-fiber-inc/myextension",
            "uri": "https://travis.ci/fabrikam-fiber-inc/myextension.svg?branch=master",
            "description": "TravisCI build for the project"
        },
        {
            "href": "https://ci.appveyor.com/projects/fabrikam-fiber-inc/myextension",
            "uri": "https://ci.appveyor.com/api/projects/status/vlg2sgs2y7tsdxpj4c?svg=true",
            "description": "AppVeyor build for the project"
        }
    ],
    "contributions": [
        {
            "id": "showCommits",
            "type": "ms.vss-web.action",
            "description": "Adds a menu action from builds grid to show associated items.",
            "targets": [
                "ms.vss-build-web.completed-build-menu"
            ],
            "properties": {
                "title": "View associated items",
                "uri": "launch.html"
            }
        }
    ]
}