Как вызвать VSTS REST API, чтобы получить список артефактов для определения выпуска в веб-расширении?

Я реализую веб-расширение для VSTS для управления конкретными выпусками. Из этого расширения мне нужно запустить новый выпуск для конкретного определения выпуска. Предпосылкой для создания релиза является конкретный набор используемых артефактов и их правильных версий. И это моя боль.

Существует вызов RESP API (недокументированный), который предоставляет список артефактов с набором версий для каждого из них, а также с предварительно выбранной версией артефакта по умолчанию, которая будет использоваться в новом выпуске. Такой API вызывается самим VSTS, когда вы открываете диалоговое окно (или боковую панель) для создания новой версии. Он также определен в VSTS Release API (ReleaseManagement / Core / RestClient), имя функции - getArtifactVersions.

Базовый запрос выглядит так: https: // {collectionName} .vsrm.visualstudio.com / {projectId} / _apis / Release / artifacts / versions? ReleaseDefinitionId = {releaseDefinitionId}.

Когда я запускаю запрос прямо в браузере, я получаю правильный ответ (список артефактов и их доступные версии). Но когда я запускаю его из веб-расширения, я получаю ошибку 401: TF400813: пользователь «7a6b0fe0-56fd-61f5-9a78-2e170802ac50» не авторизован для доступа к этому ресурсу.

Я совершенно уверен, что эта проблема находится где-то в пределах, установленных в файле манифеста vss-extension.json. Я поместил туда все возможные области, определенные в документации, но все равно безуспешно. Идентификатор пользователя из сообщения об ошибке - это моя личность, и у меня есть права администратора для нашей коллекции. Когда я запускаю запрос лично (используя личный токен доступа или просто авторизуясь в браузере), результат передается правильно. Но тот же пользователь, использующий сгенерированный токен предъявителя, становится неавторизованным. Я предполагаю, что исходя из этого поведения. Что-то отсутствует в областях манифеста.

U поместил все области действия из документации (самые высокие из каждой группы областей действия) и все равно безуспешно. Вот их список:

"vso.agentpools",
"vso.build_execute",
"vso.release_manage",
"vso.code_manage",
"vso.packaging_manage",
"vso.work_write",
"vso.agentpools_manage",
"vso.chat_manage",
"vso.dashboards_manage",
"vso.entitlements",
"vso.extension_manage",
"vso.extension.data_write",
"vso.gallery_manage",
"vso.identity",
"vso.notification_manage",
"vso.profile_write",
"vso.project_manage",
"vso.symbols_manage",
"vso.test_write"

Есть идеи, какой объем мне не хватает?




Ответы (1)


Я сообщил о проблеме здесь: Расширение VSTS ReleaseManagement / Core / Ошибка RestClient api 401, за которой вы можете следить.

Вы можете отправить http-запрос с токеном личного доступа для получения необходимых данных.

Вы также можете получить определение выпуска, а затем получить каждую версию артефакта через соответствующий REST API, например Получить список коммитов, Получить список сборок.

person starian chen-MSFT    schedule 06.04.2018