Как предоставить агенту TFS права доступа к API-интерфейсу TFS REST? - PullRequest
0 голосов
/ 08 ноября 2018

Я слежу за этим вопросом Доступны ли значения пользовательских возможностей агента сборки TFS на этапах сборки? , в частности Ответ Севы , с прямыми запросами REST API:

$tfsUrl = $env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI
$token = $env:SYSTEM_ACCESSTOKEN
$authExpr = "whatever:$token"
$bytes = [System.Text.Encoding]::UTF8.GetBytes($authExpr)
$base64 = [System.Convert]::ToBase64String($bytes)
$headers = @{"Authorization" = "Basic $base64"}
$poolUrl = "${tfsUrl}_apis/distributedtask/pools/"
$response = Invoke-RestMethod $poolUrl -Headers $headers
if ($response.count -eq 0)
{
  throw "No pools are accessible. No permissions?"
}

При запуске с моим личным токеном доступа этот код возвращает массив пулов в формате JSON. Однако при запуске на агенте сборки в качестве шага сборки с использованием предоставленного агентом $env:SYSTEM_ACCESSTOKEN значение response.count равно нулю, и пулы не возвращаются.

Теперь ответ, связанный выше, говорит о том, что этого следует ожидать, и мне нужно предоставить разрешения специальному идентификатору пользователя, который агент использует для связи с TFS. Используя конечную точку ${tfsUrl}_api/_common/GetUserProfile REST (от агента), я подтвердил, что этот пользователь действительно называется «Служба построения коллекции проектов ( ProjectCollectionName )», а часть ProjectCollectionName относится к TFS. экземпляр.

Итак, я иду в конфигурацию, Очереди агента, выбираю свою очередь, Роли, Добавить, набираю до тех пор, пока не появится «Служба построения коллекции проектов ( ProjectCollectionName )», щелкните ее, проверьте, что роль является читателем, нажмите Добавлять. И результат Sorry, we couldn't add the Identity. Please try a different Identity.. Та же ошибка, если я иду в Управление пулами.

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

Итак, возможно ли это?

Редактировать: это происходит с обновлением TFS 2018 3

...