Сервисы Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022
Используйте политики ветвей, чтобы защитить важные ветви, требуя запросов на включение изменений, рецензентов, сборок и других проверок, прежде чем изменения будут слиты. В этой статье показано, как настроить политики ветви и управлять ими на веб-портале Azure DevOps и Azure DevOps CLI. Сводку доступных политик ветвей и рекомендаций по работе с ветвями см. в статье О ветвях и политиках ветвей.
Подробное руководство по безопасности, охватывающее политики веток, управление доступом к репозиторию, подписание коммитов и реальные сценарии внедрения, см. в статье Безопасные репозитории и запросы на вытягивание.
Вы не можете удалить ветку, для которой настроены обязательные политики, и все изменения должны проходить через запросы на включение (PR).
Предварительные условия
| 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". |
Открыть параметры политики ветви
Чтобы открыть параметры политики ветви на веб-портале, выполните следующие действия.
- Выберите Репозитории>ветви.
- Найдите ветвь, которую вы хотите управлять.
- Щелкните значок "Дополнительные параметры " рядом с ветвью и выберите политики ветвей.
Вы также можете открыть параметры политик ветви в разделе Параметры проекта>Репозиторий>Политики>Политики ветвей><Имя ветви>.
Отделения с политиками отображают значок политики. Выберите значок, чтобы перейти непосредственно к параметрам политики ветви.
Вы можете просмотреть список или найти ветвь в поле "Имя ветви поиска ".
Настройте политики на странице параметров ветви. Используйте следующие разделы, чтобы включить или обновить существующую политику.
Используйте интерфейс командной строки Azure DevOps для перечисления существующих политик для ветви или репозитория перед созданием или обновлением политики.
Если часто используется Azure DevOps CLI, задайте значения по умолчанию для организации и проектаaz devops configure --defaults. Если вы хотите применить политику только к одной ветви, используйте --branch-match-type exact. Используйте prefix только в том случае, если политика будет применяться в папке ветви, например release/.
Список политик
Чтобы вывести список всех политик в проекте, используйте список политик az repos.
az repos policy list [--branch]
[--detect {false, true}]
[--org]
[--project]
[--repository-id]
[--subscription]
Параметры
| Параметр |
Описание |
branch |
Имя ветви для фильтрации результатов по точному совпадению. Параметр --repository-id требуется для использования фильтра ветви. Например: --branch main. |
detect |
Автоматически определить организацию. Допустимые значения: false, true. |
org, organization |
URL-адрес организации Azure DevOps. Настройте организацию по умолчанию с помощью az devops configure -d organization=<ORG_URL>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. Пример: https://dev.azure.com/MyOrganizationName/. |
project, p |
Имя или идентификатор проекта. Настройте проект по умолчанию с помощью az devops configure -d project=<NAME_OR_ID>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. |
repository-id |
Идентификатор репозитория для фильтрации результатов по точному совпадению. Например, --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345. |
subscription |
Имя или идентификатор подписки Настройте подписку по умолчанию с помощью az account set -s <NAME_OR_ID>. |
Пример
Следующая команда возвращает все правила для ветви, действующие в ветви main репозитория Fabrikam, ID d28cd374-e7f0-4b1f-ad60-f349f155d47c. Получите идентификатор репозитория, выполнив команду az repos list.
В этом примере используется следующая конфигурация по умолчанию: az devops configure --defaults organization=https://dev.azure.com/fabrikamprime project="Fabrikam Fiber"
az repos policy list --repository-id d28cd374-e7f0-4b1f-ad60-f349f155d47c --branch main --output table
ID Name Is Blocking Is Enabled Repository Id Branch
---- --------------------------- ------------- ------------ ------------------------------------ ---------------
3 Work item linking False True d28cd374-e7f0-4b1f-ad60-f349f155d47c refs/heads/main
5 Minimum number of reviewers True True d28cd374-e7f0-4b1f-ad60-f349f155d47c refs/heads/main
6 Comment requirements False True d28cd374-e7f0-4b1f-ad60-f349f155d47c refs/heads/main
12 Required reviewers True False d28cd374-e7f0-4b1f-ad60-f349f155d47c refs/heads/main
13 Required reviewers False True d28cd374-e7f0-4b1f-ad60-f349f155d47c refs/heads/main
Отображение сведений о политике
Чтобы отобразить сведения о любой политике, используйте az repos policy show.
az repos policy show --id
[--detect {false, true}]
[--org]
[--project]
[--subscription]
Параметры
| Параметр |
Описание |
id, policy-id |
Идентификатор политики.
Обязательно. |
detect |
Автоматически определить организацию. Допустимые значения: false, true. |
org, organization |
URL-адрес организации Azure DevOps. Настройте организацию по умолчанию с помощью az devops configure -d organization=<ORG_URL>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. Пример: https://dev.azure.com/MyOrganizationName/. |
project, p |
Имя или идентификатор проекта. Настройте проект по умолчанию с помощью az devops configure -d project=<NAME_OR_ID>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. |
subscription |
Имя или идентификатор подписки Настройте подписку по умолчанию с помощью az account set -s <NAME_OR_ID>. |
Команды Интерфейса командной строки Azure DevOps не поддерживаются для Azure DevOps Server.
Задайте минимальную политику проверяющего
Требуется утверждение как минимум от указанного числа рецензентов, прежде чем запрос на включение изменений может быть завершён.
Чтобы задать политику в разделе "Политики филиалов", установите минимальное количество рецензентов в значение "Вкл.". Введите необходимое количество рецензентов и выберите любой из следующих параметров:
Выберите "Разрешить инициаторам запросов утверждать свои собственные изменения, чтобы создатель PR мог проголосовать за его утверждение. В противном случае автор по-прежнему может выбрать Одобрить в PR, но его голос не засчитывается в минимально необходимое число проверяющих.
Выберите Запретить автору последнего push-запроса утверждать собственные изменения, чтобы обеспечить разделение обязанностей. По умолчанию любой пользователь с правом на push в исходной ветви может как добавлять коммиты, так и голосовать за утверждение PR. Выбор этого параметра означает, что последнее голосование вносящего изменения не учитывается, даже если данный пользователь обычно может утверждать свои собственные изменения.
Выберите «Разрешить завершение, даже если некоторые рецензенты голосуют за ожидание или отклонение», чтобы разрешить завершение PR, даже если некоторые рецензенты голосуют против утверждения. Минимальное число рецензентов все еще должно дать одобрение.
- В разделе " При отправке новых изменений":
- Выберите Требовать по крайней мере одно утверждение на каждой итерации, чтобы было необходимо как минимум одно одобрение для последнего изменения исходной ветви. Утверждение пользователя не учитывается в отношении предыдущей неутвержденной итерации, отправленной этим пользователем. В результате требуется еще одно утверждение последней итерации другим пользователем.
Функция "Требовать минимум одно утверждение для каждой итерации" доступна в Azure DevOps Server 2022.1 и выше.
- Выберите "Требовать по крайней мере одно одобрение в последней итерации", чтобы потребовать хотя бы одного одобрения за последнее изменение исходной ветви.
- Выберите "Сброс всех голосов утверждения" (не сбрасывает голоса за отклонение или ожидание), чтобы удалить все голоса утверждения, но сохранить голоса за отклонение или ожидание, как только изменяется исходная ветвь.
- Выберите «Сброс всех голосов рецензентов кода», чтобы удалить все голоса рецензентов при каждом изменении исходной ветви, включая голоса за утверждение, отклонение или ожидание.
Если все остальные политики пройдены, создатель может завершить PR, когда необходимое число рецензентов одобряет его.
Вы можете управлять количеством необходимых утверждающих для pull-запросов с помощью az repos policy approver-count.
Создать политику подсчета утверждающих.
Чтобы создать политику количества утверждающих, используйте az repos policy approver-count create.
az repos policy approver-count create --allow-downvotes {false, true}
--blocking {false, true}
--branch
--creator-vote-counts {false, true}
--enabled {false, true}
--minimum-approver-count
--repository-id
--reset-on-source-push {false, true}
[--branch-match-type {exact, prefix}]
[--detect {false, true}]
[--org]
[--project]
[--subscription]
Параметры
| Параметр |
Описание |
allow-downvotes |
Разрешить отрицательные оценки. Допустимые значения: false, true.
Обязательно. |
blocking |
Блокировать, если правило не выполнено. Допустимые значения: false, true.
Обязательно. |
branch |
Имя ветви для фильтрации результатов по точному совпадению. Параметр --repository-id требуется для использования фильтра ветви. Например: --branch main.
Обязательно. |
creator-vote-counts |
Подсчитывайте голос создателя. Допустимые значения: false, true.
Обязательно. |
enabled |
Активируйте политику. Допустимые значения: false, true.
Обязательно. |
minimum-approver-count |
Минимальное необходимое количество одобрителей. Например: 2.
Обязательно. |
repository-id |
Идентификатор репозитория для фильтрации результатов по точному совпадению. Например, --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345.
Обязательно. |
reset-on-source-push |
Сбрасывать голосование при внесении изменений в исходные данные. Допустимые значения: false, true.
Обязательно. |
branch-match-type |
Используйте аргумент branch для применения политики. Если значение равно exact, политика применяется к ветви, которая точно соответствует аргументу --branch . Если значение равно prefix, политика применяется ко всем папкам ветви, которые соответствуют префиксу в аргументе --branch . Допустимые значения: exact, prefix. Значение по умолчанию: exact. |
detect |
Автоматически определить организацию. Допустимые значения: false, true. |
org |
URL-адрес организации Azure DevOps. Вы можете настроить организацию по умолчанию с помощью az devops configure -d organization=<ORG_URL>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. Пример: https://dev.azure.com/MyOrganizationName/. |
project, p |
Имя или идентификатор проекта. Настройте проект по умолчанию с помощью az devops configure -d project=<NAME_OR_ID>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. |
subscription |
Имя или идентификатор подписки Настройте подписку по умолчанию с помощью az account set -s <NAME_OR_ID>. |
Пример
В следующем примере устанавливается минимальное количество необходимых утверждений 2 для pull-запросов в main ветке репозитория Fabrikam. Политика позволяет отрицательные голоса, что означает, что запросы на вытягивание могут быть завершены, даже если некоторые рецензенты голосуют против утверждения, при условии, что есть минимальное количество голосов за утверждение. Отправка в исходную ветвь не сбрасывает голоса. Политика также позволяет авторам pull-запросов утверждать собственные pull-запросы.
В этом примере используется конфигурация az devops configure --defaults organization=https://dev.azure.com/fabrikamprime project="Fabrikam Fiber"по умолчанию.
az repos policy approver-count create --allow-downvotes true --blocking true --branch main --creator-vote-counts true --enabled true --minimum-approver-count 2 --repository-id d28cd374-e7f0-4b1f-ad60-f349f155d47c --reset-on-source-push false --output table
ID Name Is Blocking Is Enabled Repository Id Branch
---- --------------------------- ------------- ------------ ------------------------------------ ---------------
27 Minimum number of reviewers True True d28cd374-e7f0-4b1f-ad60-f349f155d47c refs/heads/main
Обновление политики количества утверждающих
Чтобы обновить политику на количество утверждающих, используйте az repos policy approver-count update.
az repos policy approver-count update --id
[--allow-downvotes {false, true}]
[--blocking {false, true}]
[--branch]
[--branch-match-type {exact, prefix}]
[--creator-vote-counts {false, true}]
[--detect {false, true}]
[--enabled {false, true}]
[--minimum-approver-count]
[--org]
[--project]
[--repository-id]
[--reset-on-source-push {false, true}]
[--subscription]
Параметры
| Параметр |
Описание |
id, policy-id |
Идентификатор политики.
Обязательно. |
allow-downvotes |
Разрешить отрицательные оценки. Допустимые значения: false, true. |
blocking |
Блокировать, если правило не выполнено. Допустимые значения: false, true. |
branch |
Имя ветви для фильтрации результатов по точному совпадению. Параметр --repository-id требуется для использования фильтра ветви. Например: --branch main. |
branch-match-type |
Используйте аргумент branch для применения политики. Если значение равно exact, политика применяется к ветви, которая точно соответствует аргументу --branch . Если значение равно prefix, политика применяется ко всем папкам ветви, которые соответствуют префиксу в аргументе --branch . Допустимые значения: exact, prefix. Значение по умолчанию: exact. |
creator-vote-counts |
Подсчитывайте голос создателя. Допустимые значения: false, true. |
detect |
Автоматически определить организацию. Допустимые значения: false, true. |
enabled |
Активируйте политику. Допустимые значения: false, true. |
minimum-approver-count |
Минимальное необходимое количество одобрителей. Например: 2. |
org |
URL-адрес организации Azure DevOps. Вы можете настроить организацию по умолчанию с помощью az devops configure -d organization=<ORG_URL>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. Пример: https://dev.azure.com/MyOrganizationName/. |
project, p |
Имя или идентификатор проекта. Настройте проект по умолчанию с помощью az devops configure -d project=<NAME_OR_ID>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. |
repository-id |
Идентификатор репозитория для фильтрации результатов по точному совпадению. Например, --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345. |
reset-on-source-push |
Сбрасывать голосование при внесении изменений в исходные данные. Допустимые значения: false, true. |
subscription |
Имя или идентификатор подписки Настройте подписку по умолчанию с помощью az account set -s <NAME_OR_ID>. |
Команды Интерфейса командной строки Azure DevOps не поддерживаются для Azure DevOps Server.
Требовать связанные рабочие элементы
Для управления и отслеживания рабочих элементов можно требовать связи между PR и рабочими элементами. Связывание рабочих элементов обеспечивает больше контекста изменений и гарантирует, что обновления проходят через процесс отслеживания рабочих элементов.
Чтобы задать политику, в разделе Политики веток установите Проверка связанных рабочих элементов в положение Включено. Для этого параметра требуется, чтобы рабочие элементы были связаны с PR, чтобы он мог быть объединён. Настройте параметр необязательное, чтобы предупреждать, когда нет связанных рабочих элементов, но разрешить завершение pull request.
Вы можете использовать Azure CLI az repos policy work-item-connect для создания и обновления политик связывания рабочих элементов для ветви или репозитория.
Создание политики связывания рабочих элементов
Используйте az repos policy work-item-linking create, чтобы создать политику связывания рабочих элементов для репозитория или ветвей.
az repos policy work-item-linking create --blocking {false, true}
--branch
--enabled {false, true}
--repository-id
[--branch-match-type {exact, prefix}]
[--detect {false, true}]
[--org]
[--project]
[--subscription]
Параметры
| Параметр |
Описание |
blocking |
Блокировать, если правило не выполнено. Допустимые значения: false, true.
Обязательно. |
branch |
Имя ветви для фильтрации результатов по точному совпадению. Параметр --repository-id требуется для использования фильтра ветви. Например: --branch main.
Обязательно. |
enabled |
Активируйте политику. Допустимые значения: false, true.
Обязательно. |
repository-id |
Идентификатор репозитория для фильтрации результатов по точному совпадению. Например, --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345. |
branch-match-type |
Используйте аргумент branch для применения политики. Если значение равно exact, политика применяется к ветви, которая точно соответствует аргументу --branch . Если значение равно prefix, политика применяется ко всем папкам ветви, которые соответствуют префиксу в аргументе --branch . Допустимые значения: exact, prefix. Значение по умолчанию: exact. |
detect |
Автоматически определить организацию. Допустимые значения: false, true. |
org |
URL-адрес организации Azure DevOps. Вы можете настроить организацию по умолчанию с помощью az devops configure -d organization=<ORG_URL>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. Пример: https://dev.azure.com/MyOrganizationName/. |
project, p |
Имя или идентификатор проекта. Настройте проект по умолчанию с помощью az devops configure -d project=<NAME_OR_ID>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. |
subscription |
Имя или идентификатор подписки Настройте подписку по умолчанию с помощью az account set -s <NAME_OR_ID>. |
Обновление политики связывания рабочих элементов
Используйте az repos policy work-item-linking update , чтобы обновить политику связывания рабочих элементов для репозитория или одной или нескольких ветвей.
az repos policy work-item-linking update --id
[--blocking {false, true}]
[--branch]
[--branch-match-type {exact, prefix}]
[--detect {false, true}]
[--enabled {false, true}]
[--org]
[--project]
[--repository-id]
[--subscription]
Параметры
| Параметр |
Описание |
id, policy-id |
Идентификатор политики.
Обязательно. |
blocking |
Блокировать, если правило не выполнено. Допустимые значения: false, true. |
branch |
Имя ветви для фильтрации результатов по точному совпадению. Параметр --repository-id требуется для использования фильтра ветви. Например: --branch main. |
branch-match-type |
Используйте аргумент branch для применения политики. Если значение равно exact, политика применяется к ветви, которая точно соответствует аргументу --branch . Если значение равно prefix, политика применяется ко всем папкам ветви, которые соответствуют префиксу в аргументе --branch . Допустимые значения: exact, prefix. Значение по умолчанию: exact. |
detect |
Автоматически определить организацию. Допустимые значения: false, true. |
enabled |
Активируйте политику. Допустимые значения: false, true. |
org |
URL-адрес организации Azure DevOps. Вы можете настроить организацию по умолчанию с помощью az devops configure -d organization=<ORG_URL>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. Пример: https://dev.azure.com/MyOrganizationName/. |
project, p |
Имя или идентификатор проекта. Настройте проект по умолчанию с помощью az devops configure -d project=<NAME_OR_ID>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. |
repository-id |
Идентификатор репозитория для фильтрации результатов по точному совпадению. Например, --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345. |
subscription |
Имя или идентификатор подписки Настройте подписку по умолчанию с помощью az account set -s <NAME_OR_ID>. |
Пример
В следующем примере идентификатор политики 3 для main ветви репозитория Fabrikam обновляется так, чтобы быть включенным, но необязательным. В примере используется конфигурация az devops configure --defaults organization=https://dev.azure.com/fabrikamprime project="Fabrikam Fiber"по умолчанию.
az repos policy work-item-linking update --id 3 --blocking false --branch main --enabled true --repository-id d28cd374-e7f0-4b1f-ad60-f349f155d47c --output table
ID Name Is Blocking Is Enabled Repository Id Branch
---- ----------------- ------------- ------------ ------------------------------------ ---------------
3 Work item linking False True d28cd374-e7f0-4b1f-ad60-f349f155d47c refs/heads/main
Команды Интерфейса командной строки Azure DevOps не поддерживаются для Azure DevOps Server.
Проверка политики разрешения комментариев проверяет, разрешены ли все комментарии pr.
Установите для параметра Проверять разрешение комментариев значение On (Вкл.), чтобы настроить политику разрешения комментариев для вашей ветки. Затем выберите, нужно ли сделать политику обязательной или необязательной.
Дополнительные сведения о работе с комментариями к запросам на включение изменений см. в разделе «Проверка запросов на включение изменений».
Используйте Azure DevOps CLI az repos policy comment-required, чтобы задать и обновить политику разрешения комментариев.
Чтобы создать политику разрешения комментариев, используйте команду az repos policy comment-required create.
az repos policy comment-required create --blocking {false, true}
--branch
--enabled {false, true}
--repository-id
[--branch-match-type {exact, prefix}]
[--detect {false, true}]
[--org]
[--project]
[--subscription]
Параметры
| Параметр |
Описание |
blocking |
Блокировать, если правило не выполнено. Допустимые значения: false, true.
Обязательно. |
branch |
Имя ветви для фильтрации результатов по точному совпадению. Параметр --repository-id требуется для использования фильтра ветви. Например: --branch main.
Обязательно. |
enabled |
Активируйте политику. Допустимые значения: false, true.
Обязательно. |
repository-id |
Идентификатор репозитория для фильтрации результатов по точному совпадению. Например, --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345.
Обязательно. |
branch-match-type |
Используйте аргумент branch для применения политики. Если значение равно exact, политика применяется к ветви, которая точно соответствует аргументу --branch . Если значение равно prefix, политика применяется ко всем папкам ветви, которые соответствуют префиксу в аргументе --branch . Допустимые значения: exact, prefix. Значение по умолчанию: exact. |
detect |
Автоматически определить организацию. Допустимые значения: false, true. |
org |
URL-адрес организации Azure DevOps. Вы можете настроить организацию по умолчанию с помощью az devops configure -d organization=<ORG_URL>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. Пример: https://dev.azure.com/MyOrganizationName/. |
project, p |
Имя или идентификатор проекта. Настройте проект по умолчанию с помощью az devops configure -d project=<NAME_OR_ID>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. |
subscription |
Имя или идентификатор подписки Настройте подписку по умолчанию с помощью az account set -s <NAME_OR_ID>. |
Чтобы обновить политику обязательных комментариев, используйте az repos policy comment-required update.
az repos policy comment-required update --id
[--blocking {false, true}]
[--branch]
[--branch-match-type {exact, prefix}]
[--detect {false, true}]
[--enabled {false, true}]
[--org]
[--project]
[--repository-id]
[--subscription]
Параметры
| Параметр |
Описание |
id, policy-id |
Идентификатор политики.
Обязательно. |
blocking |
Блокировать, если правило не выполнено. Допустимые значения: false, true. |
branch |
Имя ветви для фильтрации результатов по точному совпадению. Параметр --repository-id требуется для использования фильтра ветви. Например: --branch main. |
branch-match-type |
Используйте аргумент branch для применения политики. Если значение равно exact, политика применяется к ветви, которая точно соответствует аргументу --branch . Если значение равно prefix, политика применяется ко всем папкам ветви, которые соответствуют префиксу в аргументе --branch . Допустимые значения: exact, prefix. Значение по умолчанию: exact. |
detect |
Автоматически определить организацию. Допустимые значения: false, true. |
enabled |
Активируйте политику. Допустимые значения: false, true. |
org |
URL-адрес организации Azure DevOps. Вы можете настроить организацию по умолчанию с помощью az devops configure -d organization=<ORG_URL>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. Пример: https://dev.azure.com/MyOrganizationName/. |
project, p |
Имя или идентификатор проекта. Настройте проект по умолчанию с помощью az devops configure -d project=<NAME_OR_ID>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. |
repository-id |
Идентификатор репозитория для фильтрации результатов по точному совпадению. Например, --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345. |
subscription |
Имя или идентификатор подписки Настройте подписку по умолчанию с помощью az account set -s <NAME_OR_ID>. |
Пример
В следующем примере идентификатор 6 политики разрешения комментариев в ветви main репозитория Fabrikam обновляется, чтобы она была блокирующей. Комментарии необходимо разрешить, прежде чем pull-запросы могут быть объединены. В этом примере используется конфигурация az devops configure --defaults organization=https://dev.azure.com/fabrikamprime project="Fabrikam Fiber"по умолчанию.
az repos policy comment-required update --id 6 --blocking true --output table
ID Name Is Blocking Is Enabled Repository Id Branch
---- -------------------- ------------- ------------ ------------------------------------ ---------------
6 Comment requirements True True d28cd374-e7f0-4b1f-ad60-f349f155d47c refs/heads/main
Команды Интерфейса командной строки Azure DevOps не поддерживаются для Azure DevOps Server.
Ограничение типов слияний
Azure Repos поддерживает несколько стратегий слияния и по умолчанию позволяет всем из них. Чтобы сохранять согласованную историю ветвления, задайте обязательную стратегию слияния при завершении PR.
Задайте для параметра Ограничить типы слияния значение Вкл., чтобы ограничить набор типов слияния, разрешённых в репозитории.
-
Базовое слияние (без быстрого переадресации) создает фиксацию слияния в целевом объекте, родители которого являются целевыми и исходными ветвями.
-
Слияние Squash создает линейную историю с одной фиксацией в целевой ветви, которая включает изменения из исходной ветви.
Узнайте больше о сквош-слиянии и о том, как оно влияет на историю ветвей.
-
Перебаза и быстрая переадресация создают линейную историю путем повторного размещения исходных фиксаций в целевой ветви без фиксации слияния.
-
Перебазирование с коммитом слияния воспроизводит исходные коммиты на целевой ветке, а также создает коммит слияния.
Используйте Azure DevOps CLI az repos policy merge-strategy, чтобы задать и обновить политику стратегии слияния.
Создание политики стратегии слияния
Используйте az repos policy merge-strategy create для создания политики стратегии слияния.
az repos policy merge-strategy create --blocking {false, true}
--branch
--enabled {false, true}
--repository-id
[--allow-no-fast-forward {false, true}]
[--allow-rebase {false, true}]
[--allow-rebase-merge {false, true}]
[--allow-squash {false, true}]
[--branch-match-type {exact, prefix}]
[--detect {false, true}]
[--org]
[--project]
[--subscription]
[--use-squash-merge {false, true}]
Параметры
| Параметр |
Описание |
blocking |
Блокировать, если правило не выполнено. Допустимые значения: false, true.
Обязательно. |
branch |
Имя ветви для фильтрации результатов по точному совпадению. Параметр --repository-id требуется для использования фильтра ветви. Например: --branch main.
Обязательно. |
enabled |
Активируйте политику. Допустимые значения: false, true.
Обязательно. |
repository-id |
Идентификатор репозитория для фильтрации результатов по точному совпадению. Например, --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345.
Обязательно. |
allow-no-fast-forward |
Базовое слияние без fast-forward. Сохраняет нелинейную историю точно так, как это происходило во время разработки. Допустимые значения: false, true. |
allow-rebase |
Перебазировать и быстро перенаправить. Создает линейную историю путем воспроизведения коммитов исходной ветви на целевую ветку без коммита слияния. Допустимые значения: false, true. |
allow-rebase-merge |
Перебазируйте с коммитом слияния. Создает частично линейную историю путем переноса коммитов из исходной ветки на целевую, а затем создания коммита слияния. Допустимые значения: false, true. |
allow-squash |
Сквош-слияние. Создает линейную историю путем слияния коммитов из исходной ветки в один новый коммит в целевую ветку. Допустимые значения: false, true. |
branch-match-type |
Используйте аргумент branch для применения политики. Если значение равно exact, политика применяется к ветви, которая точно соответствует аргументу --branch . Если значение равно prefix, политика применяется ко всем папкам ветви, которые соответствуют префиксу в аргументе --branch . Допустимые значения: exact, prefix. Значение по умолчанию: exact. |
detect |
Автоматически определить организацию. Допустимые значения: false, true. |
org |
URL-адрес организации Azure DevOps. Вы можете настроить организацию по умолчанию с помощью az devops configure -d organization=<ORG_URL>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. Пример: https://dev.azure.com/MyOrganizationName/. |
project, p |
Имя или идентификатор проекта. Настройте проект по умолчанию с помощью az devops configure -d project=<NAME_OR_ID>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. |
subscription |
Имя или идентификатор подписки Настройте подписку по умолчанию с помощью az account set -s <NAME_OR_ID>. |
use-squash-merge |
Всегда используйте squash merge. Этот параметр недоступен для других типов слияний. Допустимые значения: false, true.
Примечание.use-squash-merge Не рекомендуется и будет удален в будущем выпуске. Вместо этого используйте --allow-squash. |
Пример
Следующий пример устанавливает требуемую стратегию слияния для запросов на вытягивание в main ветви репозитория Fabrikam для включения сквош-слияния. В этом примере используется конфигурация az devops configure --defaults organization=https://dev.azure.com/fabrikamprime project="Fabrikam Fiber"по умолчанию.
az repos policy merge-strategy create --allow-squash true --blocking true --branch main --enabled true --repository-id d28cd374-e7f0-4b1f-ad60-f349f155d47c --output table
ID Name Is Blocking Is Enabled Repository Id Branch
---- ------------------------ ------------- ------------ ------------------------------------ ---------------
29 Require a merge strategy True True d28cd374-e7f0-4b1f-ad60-f349f155d47c refs/heads/main
Обновление политики стратегии слияния
Используйте az repos policy merge-strategy update для обновления политики стратегии слияния.
az repos policy merge-strategy update --id
[--allow-no-fast-forward {false, true}]
[--allow-rebase {false, true}]
[--allow-rebase-merge {false, true}]
[--allow-squash {false, true}]
[--blocking {false, true}]
[--branch]
[--branch-match-type {exact, prefix}]
[--detect {false, true}]
[--enabled {false, true}]
[--org]
[--project]
[--repository-id]
[--subscription]
[--use-squash-merge {false, true}]
Параметры
| Параметр |
Описание |
id, policy-id |
Идентификатор политики.
Обязательно. |
allow-no-fast-forward |
Базовое слияние без fast-forward. Сохраняет нелинейную историю точно так, как это происходило во время разработки. Допустимые значения: false, true. |
allow-rebase |
Перебазировать и быстро перенаправить. Создает линейную историю путем воспроизведения коммитов исходной ветви на целевую ветку без коммита слияния. Допустимые значения: false, true. |
allow-rebase-merge |
Перебазируйте с коммитом слияния. Создает частично линейную историю путем переноса коммитов из исходной ветки на целевую, а затем создания коммита слияния. Допустимые значения: false, true. |
allow-squash |
Сквош-слияние. Создает линейную историю путем слияния коммитов из исходной ветки в один новый коммит в целевую ветку. Допустимые значения: false, true. |
blocking |
Блокировать, если правило не выполнено. Допустимые значения: false, true. |
branch |
Имя ветви для фильтрации результатов по точному совпадению. Параметр --repository-id требуется для использования фильтра ветви. Например: --branch main. |
branch-match-type |
Используйте аргумент branch для применения политики. Если значение равно exact, политика применяется к ветви, которая точно соответствует аргументу --branch . Если значение равно prefix, политика применяется ко всем папкам ветви, которые соответствуют префиксу в аргументе --branch . Допустимые значения: exact, prefix. Значение по умолчанию: exact. |
detect |
Автоматически определить организацию. Допустимые значения: false, true. |
enabled |
Активируйте политику. Допустимые значения: false, true. |
org |
URL-адрес организации Azure DevOps. Вы можете настроить организацию по умолчанию с помощью az devops configure -d organization=<ORG_URL>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. Пример: https://dev.azure.com/MyOrganizationName/. |
project, p |
Имя или идентификатор проекта. Настройте проект по умолчанию с помощью az devops configure -d project=<NAME_OR_ID>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. |
repository-id |
Идентификатор репозитория для фильтрации результатов по точному совпадению. Например, --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345. |
subscription |
Имя или идентификатор подписки Настройте подписку по умолчанию с помощью az account set -s <NAME_OR_ID>. |
use-squash-merge |
Всегда ли выполнять squash merge. Этот параметр не работает для других типов слияний. Допустимые значения: false, true. |
Команды Интерфейса командной строки Azure DevOps не поддерживаются для Azure DevOps Server.
Настроить проверку сборки
Задайте политику, требующую, чтобы изменения в PR успешно собирались, прежде чем PR можно будет завершить.
Политики построения сокращают перерывы и обеспечивают успешное выполнение тестов. Политики сборки полезны даже в том случае, если вы используете непрерывную интеграцию (CI) на ваших ветках разработки, чтобы заблаговременно выявлять проблемы.
Если для триггера политики задано значение Автоматически, политика проверки сборки ставит в очередь новую сборку при создании нового запроса на вытягивание (PR) или отправке изменений в существующий PR, нацеленный на эту ветвь. Если для триггера политики выбрано значение «Вручную», пользователи должны самостоятельно поставить сборку в очередь. В обоих случаях политика оценивает результаты сборки, чтобы определить, можно ли завершить PR.
Внимание
Перед указанием политики проверки сборки создайте конвейер сборки. Если у вас нет конвейера, см. Создать конвейер сборки. Выберите тип сборки, соответствующий типу проекта.
Добавить политику проверки сборки
Нажмите кнопку + рядом с проверкой сборки.
Заполните форму Set build policy:
- Выберите конвейер сборки.
При необходимости задайте фильтр пути.
Узнайте больше о путевых фильтрах в политике ветвлений.
В разделе "Триггер" выберите "Автоматически" (при обновлении исходной ветви) или "Вручную".
В разделе "Требование политики" выберите "Обязательный" или "Необязательный". Если выбрано Обязательное, сборки должны завершиться успешно, чтобы завершить PR. Выберите "Необязательно" , чтобы предоставить уведомление о сбое сборки, но по-прежнему разрешить выполнение PR.
Задайте срок действия сборки, чтобы убедиться в том, что обновления в защищенной ветви не прерывают изменения для открытых пул-реквестов.
Немедленно при обновлении <имени> ветви: этот параметр задает состояние политики сборки PR на сбой при обновлении ветви и повторно ставит сборку в очередь. Этот параметр гарантирует успешную сборку изменений в pull request'ах, даже если защищенная ветвь изменяется.
Этот вариант лучше всего подходит для команд, важные ветви которых имеют мало изменений. Командам, работающим в насыщенных ветках разработки, может быть неудобно ждать сборку каждый раз при обновлении ветки.
После <n> часов, если <имя> ветви было обновлено: этот параметр завершает действие текущей политики, если защищенная ветвь обновляется, и актуальная сборка старше, чем указанный порог. Этот параметр представляет собой компромисс между необходимостью всегда или никогда не требовать сборку при обновлении защищённой ветви. Этот выбор уменьшает количество сборок, когда защищенная ветвь имеет частые обновления.
Никогда: обновления защищенной ветви не изменяют состояние политики. Это значение уменьшает количество сборок, но может вызвать проблемы при завершении PR, которые не были обновлены в последнее время.
Введите необязательное отображаемое имя для этой политики сборки. Это название идентифицирует политику на странице Политики ветви. Если отображаемое имя не указано, политика использует название конвейера сборки.
- Выберите Сохранить.
Когда владелец PR отправляет изменения, которые успешно создаются, состояние политики обновляется.
Если у вас есть политика сборки “немедленно при обновлении< названия ветки>” или “через <n> часов, если <название ветки> обновлено”, состояние политики обновляется при изменении защищенной ветки, если предыдущая сборка больше не действительна.
Используйте Azure DevOps CLI az repos policy build, чтобы задать и обновить политику проверки сборки.
Создание политики проверки сборки
Используйте az repos policy build create для создания политики проверки сборки.
az repos policy build create --blocking {false, true}
--branch
--build-definition-id
--display-name
--enabled {false, true}
--manual-queue-only {false, true}
--queue-on-source-update-only {false, true}
--repository-id
--valid-duration
[--branch-match-type {exact, prefix}]
[--detect {false, true}]
[--org]
[--path-filter]
[--project]
[--subscription]
Параметры
| Параметр |
Описание |
blocking |
Блокировать, если правило не выполнено. Допустимые значения: false, true.
Обязательно. |
branch |
Имя ветви для фильтрации результатов по точному совпадению. Параметр --repository-id требуется для использования фильтра ветви. Например: --branch main.
Обязательно. |
build-definition-id |
Идентификатор определения сборки.
Обязательно. |
display-name |
Отображаемое имя для этой политики сборки для идентификации политики. Например: Manual queue policy.
Обязательно. |
enabled |
Активируйте политику. Допустимые значения: false, true.
Обязательно. |
manual-queue-only |
Следует ли разрешать только ручную очередь сборок. Допустимые значения: false, true.
Обязательно. |
queue-on-source-update-only |
Ставить сборки в очередь только при обновлении источника. Допустимые значения: false, true.
Обязательно. |
repository-id |
Идентификатор репозитория для фильтрации результатов по точному совпадению. Например, --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345.
Обязательно. |
valid-duration |
Срок действия политики в минутах.
Примечание:valid-duration должно быть в пределах от нуля до одного года и должно быть равно нулю, когда --queue-on-source-update-only равен false.
Обязательно. |
branch-match-type |
Используйте аргумент branch для применения политики. Если значение равно exact, политика применяется к ветви, которая точно соответствует аргументу --branch . Если значение равно prefix, политика применяется ко всем папкам ветви, которые соответствуют префиксу в аргументе --branch . Допустимые значения: exact, prefix. Значение по умолчанию: exact. |
detect |
Автоматически определить организацию. Допустимые значения: false, true. |
org |
URL-адрес организации Azure DevOps. Вы можете настроить организацию по умолчанию с помощью az devops configure -d organization=<ORG_URL>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. Пример: https://dev.azure.com/MyOrganizationName/. |
path-filter |
Путь, на который применяется политика. Поддерживает абсолютные пути, подстановочные знаки и несколько путей, разделенных символом ;. Примеры: /WebApp/Models/Data.cs, /WebApp/*или *.cs,/WebApp/Models/Data.cs;ClientApp/Models/Data.cs. |
project, p |
Имя или идентификатор проекта. Настройте проект по умолчанию с помощью az devops configure -d project=<NAME_OR_ID>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. |
subscription |
Имя или идентификатор подписки Настройте подписку по умолчанию с помощью az account set -s <NAME_OR_ID>. |
Пример
В следующем примере устанавливается требуемая политика сборки для мердж-запросов в ветке main репозитория Fabrikam. Политика требует успешной сборки ID определения сборки 1 и разрешает только ручное добавление в очередь сборки. В этом примере используется конфигурация az devops configure --defaults organization=https://dev.azure.com/fabrikamprime project="Fabrikam Fiber"по умолчанию.
az repos policy build create --blocking true --branch main --build-definition-id 1 --display-name build-policy --enabled true --manual-queue-only true --queue-on-source-update-only false --repository-id d28cd374-e7f0-4b1f-ad60-f349f155d47c --valid-duration 0 --output table
ID Name Is Blocking Is Enabled Repository Id Branch
---- ------------ ------------- ------------ ------------------------------------ ---------------
31 build-policy True True d28cd374-e7f0-4b1f-ad60-f349f155d47c refs/heads/main
Обновление политики проверки сборки
Используйте az repos policy build update для обновления политики проверки сборки.
az repos policy build update --id
[--blocking {false, true}]
[--branch]
[--branch-match-type {exact, prefix}]
[--build-definition-id]
[--detect {false, true}]
[--display-name]
[--enabled {false, true}]
[--manual-queue-only {false, true}]
[--org]
[--path-filter]
[--project]
[--queue-on-source-update-only {false, true}]
[--repository-id]
[--subscription]
[--valid-duration]
Параметры
| Параметр |
Описание |
id, policy-id |
Идентификатор политики.
Обязательно. |
blocking |
Блокировать, если правило не выполнено. Допустимые значения: false, true. |
branch |
Имя ветви для фильтрации результатов по точному совпадению. Параметр --repository-id требуется для использования фильтра ветви. Например: --branch main. |
branch-match-type |
Используйте аргумент branch для применения политики. Если значение равно exact, политика применяется к ветви, которая точно соответствует аргументу --branch . Если значение равно prefix, политика применяется ко всем папкам ветви, которые соответствуют префиксу в аргументе --branch . Допустимые значения: exact, prefix. Значение по умолчанию: exact. |
build-definition-id |
Идентификатор определения сборки. |
detect |
Автоматически определить организацию. Допустимые значения: false, true. |
display-name |
Отображаемое имя для этой политики сборки для идентификации политики. Например: Manual queue policy. |
enabled |
Активируйте политику. Допустимые значения: false, true. |
manual-queue-only |
Следует ли разрешать только ручную очередь сборок. Допустимые значения: false, true. |
org |
URL-адрес организации Azure DevOps. Вы можете настроить организацию по умолчанию с помощью az devops configure -d organization=<ORG_URL>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. Пример: https://dev.azure.com/MyOrganizationName/. |
path-filter |
Пути, на которые применяется политика. Поддерживает абсолютные пути, подстановочные знаки и несколько путей, разделенных символом ;. Примеры: /WebApp/Models/Data.cs, /WebApp/*или *.cs,/WebApp/Models/Data.cs;ClientApp/Models/Data.cs. |
project, p |
Имя или идентификатор проекта. Настройте проект по умолчанию с помощью az devops configure -d project=<NAME_OR_ID>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. |
queue-on-source-update-only |
Ставить сборки в очередь только при обновлении источника. Допустимые значения: false, true. |
repository-id |
Идентификатор репозитория для фильтрации результатов по точному совпадению. Например, --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345. |
subscription |
Имя или идентификатор подписки Настройте подписку по умолчанию с помощью az account set -s <NAME_OR_ID>. |
valid-duration |
Срок действия политики в минутах. |
Команды Интерфейса командной строки Azure DevOps не поддерживаются для Azure DevOps Server.
Требовать проверки статуса
Внешние службы могут использовать API состояния PR для публикации подробного состояния на ваши PR. Политика филиала для дополнительных услуг позволяет внешним службам участвовать в рабочем процессе PR и определять требования политики.
Чтобы настроить политику проверки состояния, выполните следующие действия.
- Убедитесь, что служба может публиковать состояние pull request в Azure Repos.
- В политиках ветви в разделе "Проверки состояния" выберите +.
- В «Статусе для проверки» выберите из списка учтенный чек. Если служба еще не опубликовала состояние, введите непосредственно значение
genre/name.
- Задайте для параметра Требование политики значение Обязательно или Необязательно.
- При необходимости настройте авторизованный идентификатор, условия сброса, применимость политики и фильтр пути.
- Используйте Применять по умолчанию, если политику следует применять сразу после создания запроса на включение изменений.
- Используйте условный параметр, если политика должна применяться только после публикации первого состояния.
- Создайте или обновите запрос на включение изменений, нацеленный на эту ветку, и убедитесь, что политика отображается в разделе PR Политики.
Сведения о встроенных проверках Azure DevOps Services и их genre/name идентификаторах см. в статье Доступные проверки состояния запроса на включение. Полное пошаговое руководство по настройке внешней службы см. в разделе "Настройка политики ветвей для внешней службы".
Если новая интеграция еще не отображается в раскрывающемся списке, один раз отправьте статус из службы, а затем добавьте политику или введите значение genre/name напрямую.
Автоматическое включение рецензентов
Вы можете автоматически добавлять рецензентов в pull-реквесты, которые изменяют файлы в определенных каталогах или файлы, либо во все pull-реквесты в репозитории.
Нажмите кнопку +, расположенную рядом с автоматически включенными рецензентами.
Заполните экран «Добавить новое правило для рецензента».
Добавление пользователей и групп в рецензенты.
Выберите "Необязательно", если вы хотите автоматически добавить рецензентов, но не требовать их утверждения для завершения pull request.
Или выберите "Обязательный", если pull request'ы не могут быть завершены до:
- Каждый пользователь, добавленный в качестве рецензента, утверждает изменения.
- По крайней мере один человек в каждой группе, добавленной в качестве рецензента, утверждает изменения.
- Если требуется только одна группа, минимальное число участников, указанных вами, утверждают изменения.
Укажите файлы и папки, требующие автоматически включенных рецензентов. Оставьте это поле пустым, чтобы вызвать необходимость рецензентов для всех pull requests в ветке.
Выберите "Разрешить утверждать собственные изменения", если владельцы запросов на изменение могут голосовать за утверждение своих собственных запросов чтобы удовлетворить эту политику.
Вы можете указать сообщение ленты активности, которое отображается в pull request.
Выберите Сохранить.
Используйте Azure DevOps CLI az repos policy required-reviewer, чтобы задать и обновить политику обязательного рецензента.
Создание требуемой политики рецензента
Используйте az repos policy required-reviewer create для создания политики обязательных рецензентов.
az repos policy required-reviewer create --blocking {false, true}
--branch
--enabled {false, true}
--message
--repository-id
--required-reviewer-ids
[--branch-match-type {exact, prefix}]
[--detect {false, true}]
[--org]
[--path-filter]
[--project]
[--subscription]
Параметры
| Параметр |
Описание |
blocking |
Блокировать, если правило не выполнено. Допустимые значения: false, true.
Обязательно. |
branch |
Имя ветви для фильтрации результатов по точному совпадению. Параметр --repository-id требуется для использования фильтра ветви. Например: --branch main.
Обязательно. |
enabled |
Активируйте политику. Допустимые значения: false, true.
Обязательно. |
message |
Сообщение ленты действий, которое отображается в запросе на вытягивание.
Обязательно. |
repository-id |
Идентификатор репозитория для фильтрации результатов по точному совпадению. Например, --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345.
Обязательно. |
required-reviewer-ids |
Адреса электронной почты рецензентов, разделенные ;. Например: john@contoso.com;alice@contoso.com. |
branch-match-type |
Используйте аргумент branch для применения политики. Если значение равно exact, политика применяется к ветви, которая точно соответствует аргументу --branch . Если значение равно prefix, политика применяется ко всем папкам ветви, которые соответствуют префиксу в аргументе --branch . Допустимые значения: exact, prefix. Значение по умолчанию: exact. |
detect |
Автоматически определить организацию. Допустимые значения: false, true. |
org |
URL-адрес организации Azure DevOps. Вы можете настроить организацию по умолчанию с помощью az devops configure -d organization=<ORG_URL>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. Пример: https://dev.azure.com/MyOrganizationName/. |
path-filter |
Пути, на которые применяется политика. Поддерживает абсолютные пути, подстановочные знаки и несколько путей, разделенных символом ;. Примеры: /WebApp/Models/Data.cs, /WebApp/*или *.cs,/WebApp/Models/Data.cs;ClientApp/Models/Data.cs. |
project, p |
Имя или идентификатор проекта. Настройте проект по умолчанию с помощью az devops configure -d project=<NAME_OR_ID>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. |
subscription |
Имя или идентификатор подписки Настройте подписку по умолчанию с помощью az account set -s <NAME_OR_ID>. |
Пример
В приведенном ниже примере Джамал Хартнетт назначен необходимым рецензентом для запросов на вытягивание в ветке main репозитория Fabrikam. В этом примере используется конфигурация az devops configure --defaults organization=https://dev.azure.com/fabrikamprime project="Fabrikam Fiber"по умолчанию.
az repos policy required-reviewer create --blocking true --branch main --enabled true --message "Please review." --repository-id d28cd374-e7f0-4b1f-ad60-f349f155d47c --required-reviewer-ids fabrikamfiber4@hotmail.com --output table
ID Name Is Blocking Is Enabled Repository Id Branch
---- ------------------ ------------- ------------ ------------------------------------ ---------------
35 Required reviewers True True d28cd374-e7f0-4b1f-ad60-f349f155d47c refs/heads/main
Обновление требуемой политики рецензента
Используйте az repos policy required-reviewer update для обновления требуемой политики рецензента.
az repos policy required-reviewer update --id
[--blocking {false, true}]
[--branch]
[--branch-match-type {exact, prefix}]
[--detect {false, true}]
[--enabled {false, true}]
[--message]
[--org]
[--path-filter]
[--project]
[--repository-id]
[--required-reviewer-ids]
[--subscription]
Параметры
| Параметр |
Описание |
id, policy-id |
Идентификатор политики.
Обязательно. |
blocking |
Блокировать, если правило не выполнено. Допустимые значения: false, true. |
branch |
Имя ветви для фильтрации результатов по точному совпадению. Параметр --repository-id требуется для использования фильтра ветви. Например: --branch main. |
branch-match-type |
Используйте аргумент branch для применения политики. Если значение равно exact, политика применяется к ветви, которая точно соответствует аргументу --branch . Если значение равно prefix, политика применяется ко всем папкам ветви, которые соответствуют префиксу в аргументе --branch . Допустимые значения: exact, prefix. Значение по умолчанию: exact. |
detect |
Автоматически определить организацию. Допустимые значения: false, true. |
enabled |
Активируйте политику. Допустимые значения: false, true. |
message |
Сообщение ленты действий, которое отображается в запросе на вытягивание. |
org |
URL-адрес организации Azure DevOps. Вы можете настроить организацию по умолчанию с помощью az devops configure -d organization=<ORG_URL>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. Пример: https://dev.azure.com/MyOrganizationName/. |
path-filter |
Пути, на которые применяется политика. Поддерживает абсолютные пути, подстановочные знаки и несколько путей, разделенных символом ;. Примеры: /WebApp/Models/Data.cs, /WebApp/*или *.cs,/WebApp/Models/Data.cs;ClientApp/Models/Data.cs. |
project, p |
Имя или идентификатор проекта. Настройте проект по умолчанию с помощью az devops configure -d project=<NAME_OR_ID>.
Требуется, если не настроено как по умолчанию или выбрано с помощью конфигурации Git. |
repository-id |
Идентификатор репозитория для фильтрации результатов по точному совпадению. Например, --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345. |
required-reviewer-ids |
Адреса электронной почты рецензентов, разделенные ;. Например: john@contoso.com;alice@contoso.com. |
subscription |
Имя или идентификатор подписки Настройте подписку по умолчанию с помощью az account set -s <NAME_OR_ID>. |
Команды Интерфейса командной строки Azure DevOps не поддерживаются для Azure DevOps Server.
Разрешить обход политики при необходимости
В некоторых случаях может потребоваться обойти требования политики. Права на обход ограничений позволяют отправлять изменения в ветвь напрямую или завершать запросы на вытягивание, которые не соответствуют политикам ветви. Вы можете предоставить разрешения обхода пользователю или группе и ограничить эти разрешения для всего проекта, репозитория или одной ветви.
Два разрешения позволяют пользователям обойти политику ветви разными способами:
Обход политик при завершении 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, режим агента особенно полезен для сбора контекста проекта, необходимого перед обновлением политик ветви.
Связанные материалы