Политика предварительного получения политики Azure git check-in на стороне сервера

Я пытаюсь ограничить фиксацию GIT без указания идентификатора рабочего элемента в сообщении фиксации. т.е. #workitemID #123

Предложите решение для конфигурации на стороне сервера на Azure DevOps GIT Hooks.

3 ответа

Перехватчик предварительного приема на стороне сервера Azure запрашивается с 2018 года, но еще не реализован.

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

Существуют политики для блокировки определенных шаблонов файлов, но:

push-политик их просто недостаточно, поскольку они охватывают лишь несколько конкретных сценариев.

Политики предварительного приема и переноса имеют серьезные последствия для безопасности. Кроме того, они также могут повлиять на производительность. Запуск ловушки предварительного приема на сервере небезопасен, запуск их, в то же время заставляя клиента ждать, на другом хосте, при передаче репо и запрошенных изменений потенциально слишком медленно. Эти последствия, кажется, всегда были более важны для команды Azure DevOps, тем более что сборки Pull Requests и Validation могут служить той же цели. Вы можете добавить свои голоса к запросу функции здесь.

В Request Политик Напряжений помешают код присоединяемого к ветви без кода, проходящего сконфигурированных валидации. Одна из этих проверок заключается в том, что PR должен быть связан с рабочим элементом:

Это не будет блокировать отдельные коммиты, у которых нет идентификатора рабочего элемента, но гарантирует, что код, объединенный в ваши долгоживущие ветки, связан с рабочим элементом. Ассоциация может произойти через упоминание в комментарии (например,#1234) или с экрана запроса на вытягивание с ручной привязкой.

Для меня это лучше, чем требовать #1234в каждом сообщении о коммите, так как я обычно делаю несколько коммитов для частей работы, а затем объединяю их как одну. Но ваш пробег может отличаться.

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

Ни одно из решений не будет действовать как перехватчик до получения, коммиты будут добавлены в целевое репо, и только после этого политика будет гарантировать, что код не будет объединен.

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

Чтобы включить политику запросов на вытягивание, перейдите на страницу веток в Azure DevOps и выберите ветку для защиты:

Или используйте az devopscli, чтобы настроить политику для нескольких веток одновременно, как описано в моем сообщении в блоге здесь:

az extension add --name "azure-devops"
az login

az repos policy create --org {your org} --project {your project name or guid} --config "path/to/config/file"

Здесь также можно найти больше документов.

Репозитории Azure поддерживают проверку связанных рабочих элементов с помощью политик филиалов:

https://docs.microsoft.com/en-us/azure/devops/repos/git/branch-policies?view=azure-devops

Другие вопросы по тегам