Освобождение политики филиала для агента сборки не работает - PullRequest
0 голосов
/ 27 июня 2018

В рамках определения сборки TFS 2017 R2 CI я пытаюсь объединить коммиты из одной ветви в другую. Если вы можете вообразить, что добавляется исправление в тестовой среде, то в рамках сборки я запускаю несколько команд git.

В ветвях включены политики, которые по существу требуют запросов на получение для фиксации. Чтобы этот поток работал, мне нужно освободить агент сборки от политик филиала.

Моя сборка def - это отдельный скрипт powershell, который запускает whoami, затем git merge и затем git push. Whoami возвращает пользователя:

domain\adminAccount

У учетной записи администратора есть следующие свойства разрешения:

  • Уровень сбора: член группы учетных записей служб
  • Уровень командного проекта: группа учетных записей служб является членом группы администраторов сборки
  • Уровень репозитория: для группы «Администраторы сборки» установлено разрешение «Освобождение от применения политик».
  • Индивидуальный уровень: если я добавлю этого пользователя и отследю его освобождение от разрешений на принудительное применение политики, он покажет «наследуемое разрешение». Смотрите изображение ниже.

Permissions Trace

Однако, когда я пытаюсь протолкнуть коммит в ветку, я получаю ошибку TFS:

TF402455: Pushes to this branch are not permitted; you must use a pull request to update this branch.

Если эти разрешения учетной записи верны, и когда я выполняю эти сценарии, они показывают эту учетную запись как используемую, что мне не хватает? Есть ли какая-то логика черного ящика о том, какая учетная запись на самом деле выполняет эту функцию, которую я должен освободить от применения политики?

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Марина Лю - Дайте мне знать, если я говорю что-то неправильное, ваш ответ может быть полезен для кого-то еще!

Несколько замечаний по поводу решения проблемы:

  • Пользователь, который выполняет сценарии / агенты PowerShell, выполняет довольно бесполезную информацию. Вместо этого вы хотите использовать команду "git config user.name", чтобы увидеть, какие учетные данные git используются.
  • Причина в том, что независимо от того, какой пользователь выполняет сценарии сборки, процесс сборки будет использовать учетные данные пользователя git (просматриваемые в диспетчере учетных данных на панели Ctrl) или просто «ближайший» git полномочия. В нашем случае пользователь, который был также администратором на виртуальной машине агента сборки.
  • По моему инстинктивному пониманию, политики ветвей применяются в TFS, перехватывая команду git, просматривая учетные данные git, а затем пытаясь сопоставить их с учетной записью AD, а затем проверяя исключения политики.
  • Наконец, дважды проверьте членство в группе для любой учетной записи, выполняющей процессы сборки на агенте, поскольку именно это в конечном итоге определяет их возможность освобождения от политик филиала. Даже если вы добавите этого пользователя в TFS и освободите его, если группа, к которой он принадлежит, даже просто «не установлена» для исключения из политики, это может заблокировать его!
0 голосов
/ 29 июня 2018

После разрешения «Освобождение от применения политики» setbas Разрешено для вашей собственной учетной записи, это означает, что у вас уже есть разрешение на прямую передачу в защищенную ветку.

Единственное, что следует отметить, это агент сборки должен быть зарегистрирован как domain\user как учетная запись пользователя, в которую вы входите TFS:

enter image description here

После изменения учетной записи для входа в систему необходимо перезапустить службу агента и перестроить ее.

...