Я пытался заставить конвейер поддерживать поиск через REST на конечных точках службы - однако он у меня работает; для этого требуется пользовательский пул агентов / агент. Как только «любой» пользовательский агент будет добавлен, будет работать либо размещенный, либо пользовательский агент, который получит соответствующий токен OAuth2. Тем не менее, если пользовательского агента НЕТ - размещенный агент не может быть добавлен в разрешения ...

тоящее время мы используем определенное имя пользователя и PAT для выполнения вызовов API REST Azure DevOps, но это не очень хорошее решение с точки зрения обслуживания и уязвимости. Вместо этого мы хотели бы использовать токен OAuth.

Один случай, с которым мы сталкиваемся, - это попытка создать конечные точки службы из нашего конвейера. Я могу проверить, хорошо ли существует конечная точка из нашего скрипта Powershell, используя:

Invoke-RestMethod -Uri https://xxx.visualstudio.com/projectname/_apis/serviceendpoint/endpoints?api-version=5.0-preview.2 -Method Get -ContentType "application/json" -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"} -Verbose -Debug

К сожалению, когда я пытаюсь использовать следующее для создания конечной точки, если она не существует, я получаю 403 (Запрещено). Это вызов:

Invoke-RestMethod -Uri https://xxx.visualstudio.com/projectname/_apis/serviceendpoint/endpoints?api-version=5.0-preview.2 -Method Post -ContentType "application/json" -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"} -Body $RequestBody -Verbose -Debug

Похоже, что пользователь, вызывающий это, не имеет прав для создания ресурсов (или, по крайней мере, конечных точек службы). Я один из тех, кто запускает релиз, но я не верю, что это мой доступ, потому что я администратор всей организации и могу делать практически все, что угодно. Я также изменил доступ пользователя встроенной службы Project Collection Build Service к конвейеру выпуска, чтобы иметь полный доступ и все еще получать проблему. Разве то, что я пытаюсь достичь, не возможно?

Ответы на вопрос(1)

Ваш ответ на вопрос