У меня есть сборки VSTS, в которых для доступа к API-интерфейсу VSTS используется скрипт Powershell, аналогичный описанному в Документация Microsoft .
В документе говорится:
Чтобы разрешить сценарию использовать токен OAuth процесса сборки, перейдите на вкладку «Параметры» определения сборки и выберите «Разрешить сценариям доступ к токену OAuth».
После того, как вы это сделаете, ваш сценарий может использовать для SYSTEM_ACCESSTOKENпеременная среды для доступа к API-интерфейсу VSTS REST.Например:
Пример:
$url = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$env:SYSTEM_TEAMPROJECTID/_apis/build-release/definitions/$($env:SYSTEM_DEFINITIONID)?api-version=2.0"
Write-Host "URL: $url"
$definition = Invoke-RestMethod -Uri $url -Headers @{
Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
Write-Host "Definition = $($definition | ConvertTo-Json -Depth 1000)"
Как подробно описано в документации Microsoft, я уверен, что вы привыкли идти в «Сборка»> «Параметры» и нажимать «Разрешить сценариям доступ к токену OAuth».', но его больше нет (см. рис. ниже).
![enter image description here](https://i.stack.imgur.com/ltX3p.jpg)
Когда я пытаюсь построить сборку, я получаю следующее (чего не происходит в моих старых сборках):
Invoke-RestMethod: {"$ id": "1", "innerException": null, "message": "TF400813: пользователь '' не авторизован для доступа к этому
Кроме того,когда я клонирую сборку (которая работала хорошо, когда я делал это 3 месяца назад), для свойства устанавливается значение false (в оригинале оно равно true).
![enter image description here](https://i.stack.imgur.com/Qy4aO.jpg)
ОБНОВЛЕНИЕ: Если я экспортирую из VSTS, изменю это свойство и снова импортирую, это работает, но мне действительно нужно решение без такого рода ручного вмешательства.
Как это должно быть сделано сейчас, пожалуйста?