VSTS: Почему конвейеры запускаются одним и тем же пользователем? - PullRequest
0 голосов
/ 04 октября 2018

У нас есть главный релизный конвейер, который развертывает дочерние конвейеры и запускает их.При запуске главного конвейера Azure DevOps правильно сообщает о том, кто запустил это развертывание, и каждый экземпляр развертывания показывает, что оно было запущено различными пользователями (то есть теми, кто фактически инициировал его).

Однако, когда дочерний конвейер создается и запускается, он всегда отображает того же пользователя , независимо от того, кто начал развертывание главного конвейера.Другими словами, дочерний конвейер не показывает человека, который запустил главное развертывание, которое его создало.

Чтобы проиллюстрировать это, скажем, у меня есть пользователи A и B.

  1. Пользователь A запускает главный конвейер
  2. Azure DevOps сообщает, что пользователь A развернут с главного
  3. Дочерний конвейер создается и автоматически запускается
  4. Azure DevOps сообщает, что пользователь A развернут из дочернего объекта

В этом случае пользователь A правильно отображается как пользователькоторый начал развертывание дочернего трубопровода.Теперь рассмотрим:

  1. Пользователь B запускает главный конвейер
  2. Azure DevOps сообщает, что пользователь B развернут из главного
  3. Дочерний конвейер создан и автоматически запускается
  4. Azure DevOps сообщает, что Пользователь A развернут из дочернего узла

Во втором случае пользователь A ошибочно сообщается как тот, кто инициировал развертывание дочернего конвейера.

FWIW. JSON, использованный для генерации дочернего конвейера, был последний раз изменен пользователем A, а учетные данные пользователя A используются для выполнения вызовов API-интерфейса Azure DevOps REST, поэтому они могут иметь некоторое влияние.В чем причина этой проблемы и как мы можем ее решить?

1 Ответ

0 голосов
/ 05 октября 2018

Вы как бы ответили на свой вопрос, по крайней мере с точки зрения основной причины:

Учетные данные пользователя A используются для выполнения вызовов API REST Azure DevOps

Если вы используете чьи-либо учетные данные для того, чтобы поставить в очередь сборку или выпуск, он ставится в очередь как личность этого пользователя.Там нет никакого способа обойти это.

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

Вместо использования идентификатора пользователя для выполнения вызовов REST API используйте переменную $(System.AccessToken).Вам нужно будет разрешить сценариям доступ к токену, установив флажок «Разрешить доступ скриптов к OAuth-токену» в настройках фазы.

Это не приведет к тому, что сборка будет поставлена ​​в очередь пользователем B, но такжене будет неправильно отображаться как неправильный человек - он будет отображаться как учетная запись системной службы.

Возможно, вы захотите пересмотреть свой подход к выпуску - рассмотрите возможность иметь одно определение выпуска с несколькими средами.

...