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

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

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

Основной запрос выглядит следующим образом : https://{collectionName}.vsrm.visualstudio.com/{projectId}/_apis/Release/artifacts/version? ReleaseDefinitionId = {releaseDefinitionId}.

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

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

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

"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, такой как Получить список коммитов, Получить список сборок.

Другие вопросы по тегам