Настройка политик ветви и управление ими

Сервисы Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022

Используйте политики ветвей, чтобы защитить важные ветви, требуя запросов на включение изменений, рецензентов, сборок и других проверок, прежде чем изменения будут слиты. В этой статье показано, как настроить политики ветви и управлять ими на веб-портале Azure DevOps и Azure DevOps CLI. Сводку доступных политик ветвей и рекомендаций по работе с ветвями см. в статье О ветвях и политиках ветвей.

Подробное руководство по безопасности, охватывающее политики веток, управление доступом к репозиторию, подписание коммитов и реальные сценарии внедрения, см. в статье Безопасные репозитории и запросы на вытягивание.

Вы не можете удалить ветку, для которой настроены обязательные политики, и все изменения должны проходить через запросы на включение (PR).

Подсказка

Вы можете использовать ИИ, чтобы помочь с этой задачей далее в этой статье или см. включение ИИ-помощи с помощью Azure DevOps MCP Server, чтобы приступить к работе.

Предварительные условия

Requirement Сведения
Permissions Входить в состав группы безопасности "Администраторы проекта" или иметь разрешение Изменение политик на уровне репозитория. Дополнительные сведения см. в разделе "Настройка разрешений репозитория Git".
Настройка Azure DevOps CLI (необязательно) Чтобы использовать команды политики Azure DevOps CLI az repos, выполните инструкции по началу работы с Azure DevOps CLI.
Репозиторий, предназначенный для интерфейса командной строки (необязательно) Перед созданием или обновлением политик в CLI определите идентификатор репозитория, выполнив команду az repos list. Чтобы избежать повторения --org и --projectустановите значения az devops configure --defaultsпо умолчанию.
Зависимости политики Перед настройкой проверки сборки подготовите конвейер сборки. Прежде чем настраивать проверки состояния, убедитесь, что внешняя служба или встроенная интеграция уже могут публиковать состояние запроса на вытягивание.
Настройка помощи СИ (необязательно) Чтобы использовать помощь СИ с Azure DevOps MCP Server, используйте службы Azure DevOps, включите режим агента в помощнике по ИИ и установите Node.js 20.0 и более поздних версий. Дополнительные сведения см. в разделе "Включение помощи по искусственному интеллекту" с помощью Azure DevOps MCP Server.
Requirement Сведения
Permissions Быть участником группы безопасности «Администраторы проекта» или иметь на уровне репозитория разрешение Изменение политик. Дополнительные сведения см. в разделе "Настройка разрешений репозитория Git".

Открыть параметры политики ветви

Чтобы открыть параметры политики ветви на веб-портале, выполните следующие действия.

  1. Выберите Репозитории>ветви.
  2. Найдите ветвь, которую вы хотите управлять.
  3. Щелкните значок "Дополнительные параметры " рядом с ветвью и выберите политики ветвей.

Снимок экрана, показывающий пункт меню

Вы также можете открыть параметры политик ветви в разделе Параметры проекта>Репозиторий>Политики>Политики ветвей><Имя ветви>.

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

Вы можете просмотреть список или найти ветвь в поле "Имя ветви поиска ".

Снимок экрана: открытие политик ветви из контекстного меню.

Настройте политики на странице параметров ветви. Используйте следующие разделы, чтобы включить или обновить существующую политику.

Задайте минимальную политику проверяющего

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

Чтобы задать политику в разделе "Политики филиалов", установите минимальное количество рецензентов в значение "Вкл.". Введите необходимое количество рецензентов и выберите любой из следующих параметров:

Снимок экрана: включение политики

  • Выберите "Разрешить инициаторам запросов утверждать свои собственные изменения, чтобы создатель PR мог проголосовать за его утверждение. В противном случае автор по-прежнему может выбрать Одобрить в PR, но его голос не засчитывается в минимально необходимое число проверяющих.

  • Выберите Запретить автору последнего push-запроса утверждать собственные изменения, чтобы обеспечить разделение обязанностей. По умолчанию любой пользователь с правом на push в исходной ветви может как добавлять коммиты, так и голосовать за утверждение PR. Выбор этого параметра означает, что последнее голосование вносящего изменения не учитывается, даже если данный пользователь обычно может утверждать свои собственные изменения.

  • Выберите «Разрешить завершение, даже если некоторые рецензенты голосуют за ожидание или отклонение», чтобы разрешить завершение PR, даже если некоторые рецензенты голосуют против утверждения. Минимальное число рецензентов все еще должно дать одобрение.

  • В разделе " При отправке новых изменений":
    • Выберите Требовать по крайней мере одно утверждение на каждой итерации, чтобы было необходимо как минимум одно одобрение для последнего изменения исходной ветви. Утверждение пользователя не учитывается в отношении предыдущей неутвержденной итерации, отправленной этим пользователем. В результате требуется еще одно утверждение последней итерации другим пользователем. Функция "Требовать минимум одно утверждение для каждой итерации" доступна в Azure DevOps Server 2022.1 и выше.
    • Выберите "Требовать по крайней мере одно одобрение в последней итерации", чтобы потребовать хотя бы одного одобрения за последнее изменение исходной ветви.
    • Выберите "Сброс всех голосов утверждения" (не сбрасывает голоса за отклонение или ожидание), чтобы удалить все голоса утверждения, но сохранить голоса за отклонение или ожидание, как только изменяется исходная ветвь.
    • Выберите «Сброс всех голосов рецензентов кода», чтобы удалить все голоса рецензентов при каждом изменении исходной ветви, включая голоса за утверждение, отклонение или ожидание.

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

Требовать связанные рабочие элементы

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

Чтобы задать политику, в разделе Политики веток установите Проверка связанных рабочих элементов в положение Включено. Для этого параметра требуется, чтобы рабочие элементы были связаны с PR, чтобы он мог быть объединён. Настройте параметр необязательное, чтобы предупреждать, когда нет связанных рабочих элементов, но разрешить завершение pull request.

Снимок экрана, показывающий требование связанных рабочих элементов в пул-реквестах.

Требовать разрешения комментариев

Проверка политики разрешения комментариев проверяет, разрешены ли все комментарии pr.

Установите для параметра Проверять разрешение комментариев значение On (Вкл.), чтобы настроить политику разрешения комментариев для вашей ветки. Затем выберите, нужно ли сделать политику обязательной или необязательной.

Снимок экрана: проверка разрешения комментариев.

Дополнительные сведения о работе с комментариями к запросам на включение изменений см. в разделе «Проверка запросов на включение изменений».

Ограничение типов слияний

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

Задайте для параметра Ограничить типы слияния значение Вкл., чтобы ограничить набор типов слияния, разрешённых в репозитории.

Снимок экрана «Ограничить типы слияний».

  • Базовое слияние (без быстрого переадресации) создает фиксацию слияния в целевом объекте, родители которого являются целевыми и исходными ветвями.
  • Слияние Squash создает линейную историю с одной фиксацией в целевой ветви, которая включает изменения из исходной ветви. Узнайте больше о сквош-слиянии и о том, как оно влияет на историю ветвей.
  • Перебаза и быстрая переадресация создают линейную историю путем повторного размещения исходных фиксаций в целевой ветви без фиксации слияния.
  • Перебазирование с коммитом слияния воспроизводит исходные коммиты на целевой ветке, а также создает коммит слияния.

Настроить проверку сборки

Задайте политику, требующую, чтобы изменения в PR успешно собирались, прежде чем PR можно будет завершить. Политики построения сокращают перерывы и обеспечивают успешное выполнение тестов. Политики сборки полезны даже в том случае, если вы используете непрерывную интеграцию (CI) на ваших ветках разработки, чтобы заблаговременно выявлять проблемы.

Если для триггера политики задано значение Автоматически, политика проверки сборки ставит в очередь новую сборку при создании нового запроса на вытягивание (PR) или отправке изменений в существующий PR, нацеленный на эту ветвь. Если для триггера политики выбрано значение «Вручную», пользователи должны самостоятельно поставить сборку в очередь. В обоих случаях политика оценивает результаты сборки, чтобы определить, можно ли завершить PR.

Внимание

Перед указанием политики проверки сборки создайте конвейер сборки. Если у вас нет конвейера, см. Создать конвейер сборки. Выберите тип сборки, соответствующий типу проекта.

Добавить политику проверки сборки

  1. Нажмите кнопку + рядом с проверкой сборки.

    Снимок экрана: кнопка

  2. Заполните форму Set build policy:

    Снимок экрана: параметры политики сборки.

    • Выберите конвейер сборки.
  • При необходимости задайте фильтр пути. Узнайте больше о путевых фильтрах в политике ветвлений.

  • В разделе "Триггер" выберите "Автоматически" (при обновлении исходной ветви) или "Вручную".

  • В разделе "Требование политики" выберите "Обязательный" или "Необязательный". Если выбрано Обязательное, сборки должны завершиться успешно, чтобы завершить PR. Выберите "Необязательно" , чтобы предоставить уведомление о сбое сборки, но по-прежнему разрешить выполнение PR.

  • Задайте срок действия сборки, чтобы убедиться в том, что обновления в защищенной ветви не прерывают изменения для открытых пул-реквестов.

    • Немедленно при обновлении <имени> ветви: этот параметр задает состояние политики сборки PR на сбой при обновлении ветви и повторно ставит сборку в очередь. Этот параметр гарантирует успешную сборку изменений в pull request'ах, даже если защищенная ветвь изменяется.

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

    • После <n> часов, если <имя> ветви было обновлено: этот параметр завершает действие текущей политики, если защищенная ветвь обновляется, и актуальная сборка старше, чем указанный порог. Этот параметр представляет собой компромисс между необходимостью всегда или никогда не требовать сборку при обновлении защищённой ветви. Этот выбор уменьшает количество сборок, когда защищенная ветвь имеет частые обновления.

    • Никогда: обновления защищенной ветви не изменяют состояние политики. Это значение уменьшает количество сборок, но может вызвать проблемы при завершении PR, которые не были обновлены в последнее время.

  • Введите необязательное отображаемое имя для этой политики сборки. Это название идентифицирует политику на странице Политики ветви. Если отображаемое имя не указано, политика использует название конвейера сборки.

  1. Выберите Сохранить.

Когда владелец PR отправляет изменения, которые успешно создаются, состояние политики обновляется.

Если у вас есть политика сборки “немедленно при обновлении< названия ветки>” или “через <n> часов, если <название ветки> обновлено”, состояние политики обновляется при изменении защищенной ветки, если предыдущая сборка больше не действительна.

Требовать проверки статуса

Внешние службы могут использовать API состояния PR для публикации подробного состояния на ваши PR. Политика филиала для дополнительных услуг позволяет внешним службам участвовать в рабочем процессе PR и определять требования политики.

Снимок экрана:

Чтобы настроить политику проверки состояния, выполните следующие действия.

  1. Убедитесь, что служба может публиковать состояние pull request в Azure Repos.
  2. В политиках ветви в разделе "Проверки состояния" выберите +.
  3. В «Статусе для проверки» выберите из списка учтенный чек. Если служба еще не опубликовала состояние, введите непосредственно значение genre/name.
  4. Задайте для параметра Требование политики значение Обязательно или Необязательно.
  5. При необходимости настройте авторизованный идентификатор, условия сброса, применимость политики и фильтр пути.
    • Используйте Применять по умолчанию, если политику следует применять сразу после создания запроса на включение изменений.
    • Используйте условный параметр, если политика должна применяться только после публикации первого состояния.
  6. Создайте или обновите запрос на включение изменений, нацеленный на эту ветку, и убедитесь, что политика отображается в разделе PR Политики.

Сведения о встроенных проверках Azure DevOps Services и их genre/name идентификаторах см. в статье Доступные проверки состояния запроса на включение. Полное пошаговое руководство по настройке внешней службы см. в разделе "Настройка политики ветвей для внешней службы".

Если новая интеграция еще не отображается в раскрывающемся списке, один раз отправьте статус из службы, а затем добавьте политику или введите значение genre/name напрямую.

Автоматическое включение рецензентов

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

  1. Нажмите кнопку +, расположенную рядом с автоматически включенными рецензентами.

    Снимок экрана с кнопкой «Добавить обязательных рецензентов».

  2. Заполните экран «Добавить новое правило для рецензента».

    Снимок экрана: экран

    • Добавление пользователей и групп в рецензенты.

    • Выберите "Необязательно", если вы хотите автоматически добавить рецензентов, но не требовать их утверждения для завершения pull request.

      Или выберите "Обязательный", если pull request'ы не могут быть завершены до:

      • Каждый пользователь, добавленный в качестве рецензента, утверждает изменения.
      • По крайней мере один человек в каждой группе, добавленной в качестве рецензента, утверждает изменения.
      • Если требуется только одна группа, минимальное число участников, указанных вами, утверждают изменения.
    • Укажите файлы и папки, требующие автоматически включенных рецензентов. Оставьте это поле пустым, чтобы вызвать необходимость рецензентов для всех pull requests в ветке.

    • Выберите "Разрешить утверждать собственные изменения", если владельцы запросов на изменение могут голосовать за утверждение своих собственных запросов чтобы удовлетворить эту политику.

    • Вы можете указать сообщение ленты активности, которое отображается в pull request.

  3. Выберите Сохранить.

Разрешить обход политики при необходимости

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

Два разрешения позволяют пользователям обойти политику ветви разными способами:

  • Обход политик при завершении pull-запросов применяется только к завершению pull-запросов. Пользователи с этим разрешением могут завершать pull-запросы, даже если они не удовлетворяют требованиям политик.

  • Обход политик при отправке применяется к пушам из локальных репозиториев и внесению изменений через веб. Пользователи с этим разрешением могут отправлять изменения непосредственно в защищенные ветви без соблюдения требований политики.

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

Дополнительные сведения об управлении этими разрешениями см. в разделе "Разрешения Git".

Внимание

Используйте осторожность при предоставлении возможности обхода политик, особенно на уровне репозитория и проекта. Политики являются краеугольным камнем безопасного и соответствующего управления исходным кодом.

Использовать фильтры путей с политиками веток

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

Можно указать абсолютные пути (путь должен начинаться с / или с подстановочного знака) и подстановочные знаки. Примеры:

  • /WebApp/Models/Data.cs
  • /WebApp/*
  • */Models/Data.cs
  • *.cs

Можно указать несколько путей с помощью ; разделителя. Пример:

  • /WebApp/Models/Data.cs;/ClientApp/Models/Data.cs

Если добавить к путям префикс !, они будут исключены, если в противном случае были бы включены. Пример:

  • /WebApp/*;!/WebApp/Tests/* включает все файлы в /WebApp, за исключением файлов в /WebApp/Tests
  • !/WebApp/Tests/* указывает, что файлы отсутствуют, поскольку сначала ничего не включено.

Порядок фильтров имеет важное значение. Примените фильтры слева направо.

Устранение неполадок политик веток

Могу ли я отправлять изменения непосредственно в ветви с политиками, установленными для ветвей?

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

Что такое автозавершение?

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

Когда проверяются условия политики ветви?

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

Можно ли использовать определения сборки XAML в политиках ветви?

Нет, нельзя использовать определения сборки XAML в политиках ветвей.

Какие подстановочные знаки можно использовать для обязательных рецензентов кода?

Одна звёздочка * соответствует любому количеству символов, включая как прямой слеш /, так и обратный слеш \. Вопросительные знаки ? соответствуют любому одному символу.

Примеры:

  • *.sql соответствует всем файлам с расширением .sql .
  • /ConsoleApplication/* соответствует всем файлам в папке с именем ConsoleApplication.
  • /.gitattributes соответствует файлу.gitattributes* в корневом каталоге репозитория.
  • */.gitignore соответствует любому файлу gitignore в репозитории.

Учитывается ли регистр требуемых путей рецензента кода?

Нет, политики ветви не учитывают регистр.

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

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

У меня есть разрешения на обход политики. Почему по-прежнему отображаются ошибки политики в состоянии запроса на вытягивание?

Система всегда оценивает настроенные политики для изменений запроса на вытягивание. Для пользователей, имеющих разрешения на обход политики, состояние сообщаемой политики — это только рекомендации. Если пользователь с правами на обход одобряет это, статус сбоя не блокирует завершение pull request.

Почему я не могу завершить собственные запросы на включение изменений, если включен параметр "Разрешить авторам запросов утверждать собственные изменения"?

Как политика "Требовать минимальное количество рецензентов", так и политика автоматического включения рецензентов имеют возможность разрешить запрашивающим пользователям утвердить свои собственные изменения. В каждой политике параметр применяется только к этой политике. Этот параметр не влияет на другую политику.

Например, для пулл-реквеста установлены следующие политики:

  • Требуется минимальное количество рецензентов требует по крайней мере одного рецензента.
  • Автоматически включенные рецензенты требуют, чтобы вы или команда, в которую вы входите, были рецензентами.
  • Автоматически включенные рецензенты имеют функцию "Разрешить запрашивателям утверждать свои собственные изменения" включенной.
  • Требуется минимальное количество рецензентов, в котором Разрешить запрашивающим утверждать свои изменения не включено.

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

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

Что происходит, когда фильтр пути не начинается с / или подстановочного знака?

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

Использование ИИ для настройки политик ветви и управления ими

Если вы настроите сервер MCP Azure DevOps, то сможете с помощью естественного языка получать контекст репозитория, ветки, запроса на включение и сборки перед обновлением политик веток в Azure DevOps Services.

Для сервера MCP Azure DevOps требуются службы Azure DevOps, режим агента в помощнике по ИИ и Node.js 20.0+. Текущая документация MCP не описывает действия чтения или записи прямой политики ветви, поэтому используйте веб-портал Azure DevOps или Azure DevOps CLI для создания и обновления политик.

задачи Пример запроса
Список веток в репозитории List the branches in repo <Contoso.Web> in project <Contoso>
Проверяйте запросы на включение изменений перед ужесточением политики What pull requests require my review in project <Contoso>?
Просмотрите запрос на включение изменений и связанные рабочие элементы Get details for pull request <67> and its linked work items in project <Contoso>
Проверять состояние сборки перед тем, как сделать проверку сборки обязательной Get the latest build status for pipeline <Contoso-CI> in project <Contoso>

Замечание

Если вы используете Visual Studio Code, режим агента особенно полезен для сбора контекста проекта, необходимого перед обновлением политик ветви.