ブランチ ポリシーと設定
[アーティクル] 03/25/2024
20 人の共同作成者
フィードバック
この記事の内容
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
ブランチ ポリシーは、チームが開発の重要なブランチ を保護するのに役立ちます。 ポリシーによって、チームのコード品質と変更管理の基準が適用されます。 この記事では、ブランチ ポリシーを設定して管理する方法について説明します。 すべてのリポジトリおよびブランチのポリシーと設定の概要については、Git リポジトリの設定とポリシー に関するページを参照してください。
必要なポリシーが構成されているブランチは削除できず、すべての変更に pull request (PR) が必要になります。
前提条件
ブランチ ポリシーを設定するには、プロジェクト管理者セキュリティ グループのメンバーであるか、リポジトリ レベルの [ポリシーの編集] アクセス許可を持っている必要があります。 詳細については、「Git リポジトリのアクセス許可を設定する 」を参照してください。
ブランチ ポリシーを管理するには、[Repos] >[ブランチ] を選択して、Web ポータルで [ブランチ] ページを開きます。
また、[プロジェクト設定] >[リポジトリ] >[ポリシー] >[ブランチ ポリシー] ><[ブランチ名]> で、ブランチ ポリシーの設定を表示することもできます。
ポリシーがあるブランチには、ポリシー アイコンが表示されます。 そのアイコンを選択すると、ブランチのポリシー設定に直接移動できます。
ブランチ ポリシーを設定するには、管理する必要があるブランチを見つけます。 一覧を参照するか、右上の [ブランチ名の検索] ボックスでブランチを検索することができます。
ブランチの横にある [その他のオプション] アイコンを選択して、コンテキスト メニューから [ブランチ ポリシー] を選択します。
ページ内でブランチを見つけます。 リストを参照することも、右上の [すべてのブランチを検索] ボックスを使用してブランチを検索することもできます。
... ボタンを選択します。 コンテキスト メニューから [Branch policies] を選択します。
ブランチの設定ページでポリシーを構成します。 ポリシーの種類ごとの説明と手順については、次のセクションを参照してください。
[Policies] ページでポリシーを構成します。 ポリシーの種類ごとの説明については、次のセクションを参照してください。 [変更の保存] を選択して、新しいポリシー構成を適用します。
Azure DevOps CLI を使用して、ブランチまたはリポジトリのポリシーを表示できます。
ポリシーを一覧表示する
プロジェクト内のすべてのポリシーを一覧表示するには、az repos policy list を使用します。
az repos policy list [--branch]
[--detect {false, true}]
[--org]
[--project]
[--query-examples]
[--repository-id]
[--subscription]
パラメーター
パラメーター
説明
branch
完全一致で結果をフィルター処理するブランチ名。 ブランチ フィルターを使用するには、--repository-id
パラメーターが必要です。 (例: --branch main
)。
detect
組織を自動的に検出します。 指定できる値: false
、true
。
$
Azure DevOps 組織の URL。 az devops configure -d organization=<ORG_URL>
を使用して、既定の組織を構成できます。 既定として構成されていない場合、または git config を使用して選択されていない場合は必須 です (例: https://dev.azure.com/MyOrganizationName/
)。
$
プロジェクトの名前または ID。 az devops configure -d project=<NAME_OR_ID>
を使って、既定のプロジェクトを構成できます。 既定として構成されていない場合、または git config を使用して選択されていない場合は必須 です。
query-examples
推奨される JMESPath 文字列。 いずれかのクエリをコピーし、--query
パラメーターの後に二重引用符で囲んで貼り付けると、結果を表示できます。 1 つ以上の位置指定キーワードを追加すると、これらのキーワードに基づいて候補が表示されます。
repository-id
完全一致で結果をフィルター処理するリポジトリの ID。 たとえば、「 --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345
」のように入力します。
subscription
サブスクリプションの名前または ID。 az account set -s <NAME_OR_ID>
を使用して、既定のサブスクリプションを構成できます。
例
次のコマンドは、Fabrikam リポジトリ ID d28cd374-e7f0-4b1f-ad60-f349f155d47c
の main
ブランチで有効なすべてのブランチ ポリシーを返します。 az repos list
を実行すると、リポジトリ ID を取得できます。
この例では、次の既定の構成を使用します 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]
[--query-examples]
[--subscription]
パラメーター
パラメーター
説明
$
ポリシーの ID。 [必須] 。
detect
組織を自動的に検出します。 指定できる値: false
、true
。
$
Azure DevOps 組織の URL。 az devops configure -d organization=<ORG_URL>
を使用して、既定の組織を構成できます。 既定として構成されていない場合、または git config を使用して選択されていない場合は必須 です (例: https://dev.azure.com/MyOrganizationName/
)。
$
プロジェクトの名前または ID。 az devops configure -d project=<NAME_OR_ID>
を使って、既定のプロジェクトを構成できます。 既定として構成されていない場合、または git config を使用して選択されていない場合は必須 です。
query-examples
推奨される JMESPath 文字列。 いずれかのクエリをコピーし、--query
パラメーターの後に二重引用符で囲んで貼り付けると、結果を表示できます。 1 つ以上の位置指定キーワードを追加すると、これらのキーワードに基づいて候補が表示されます。
subscription
サブスクリプションの名前または ID。 az account set -s <NAME_OR_ID>
を使用して、既定のサブスクリプションを構成できます。
Azure DevOps CLI コマンドは、Azure DevOps Server ではサポートされていません。
レビュー担当者の最少数を要求する
ソフトウェア開発プロジェクトには、コード レビューが重要です。 チームが PR を確実にレビューして承認するために、最少数のレビュー担当者からの承認を要求できます。 基本ポリシーでは、指定された数のレビュー担当者が拒否なくコードを承認する必要があります。
ポリシーを設定するには、[ブランチ ポリシー] で、[レビュー担当者の最少数が必要です] を [オン] に設定します。 必要なレビュー担当者数を入力し、次のいずれかのオプションを選択します。
PR の作成者がその承認に投票できるようにするには、[要求者が自分の変更を承認することを許可する] を選択します。 選択しない場合、作成者は PR の [承認] に投票することはできますが、その投票はレビュー担当者の最少数にはカウントされません。
職務の分離を適用するには、[最新のプッシュ元が自分の変更を承認することを禁止する] を選択します。 既定では、ソース ブランチに対するプッシュ アクセス許可を持つすべてのユーザーは、コミットを追加し、PR 承認に投票できます。 このオプションを選択すると、通常は自身の変更を承認できる場合でも、最新のプッシュ元の投票はカウントされません。
一部のレビュー担当者が承認に反対の投票をする場合であっても PR 完了を可能にするには、[一部のレビュー担当者が待機中または拒否と投票した場合でも完了を許可する] を選択します。 最少数のレビュー担当者が、引き続き承認する必要があります。
[新しい変更がプッシュされたとき] で、以下を選択します。
最後のソース ブランチの変更に少なくとも 1 つの承認投票を要求するには、[最後のイテレーションで少なくとも 1 つの承認が必要です] を選択します。
ソース ブランチが変更されるたびに、すべての承認投票を削除するが、拒否または待機の投票は保持するには、[すべての承認投票をリセット (投票は拒否または待機にはリセットされません)] を選択します。
承認、拒否、待機の投票を含めて、ソース ブランチが変更されるたびにすべてのレビュー担当者の投票を削除するには、[すべてのコード レビュー担当者の投票をリセットします] を選択します。
[新しい変更がプッシュされたとき] で、以下を選択します。
最後のソース ブランチの変更に少なくとも 1 つの承認投票を要求するには、[各イテレーションで少なくとも 1 つの承認を必要とする] を選択します。 ユーザーの承認は、そのユーザーによってプッシュされた過去の未承認のイテレーションに対してカウントされません。 そのため、最後のイテレーションに対する追加の承認は、別のユーザーが行う必要があります。 Azure DevOps Server 2022.1 以降で、[各イテレーションで少なくとも 1 つの承認を必要とする] をご利用になれます。
最後のソース ブランチの変更に少なくとも 1 つの承認投票を要求するには、[最後のイテレーションで少なくとも 1 つの承認が必要です] を選択します。
ソース ブランチが変更されるたびに、すべての承認投票を削除するが、拒否または待機の投票は保持するには、[すべての承認投票をリセット (投票は拒否または待機にはリセットされません)] を選択します。
承認、拒否、待機の投票を含めて、ソース ブランチが変更されるたびにすべてのレビュー担当者の投票を削除するには、[すべてのコード レビュー担当者の投票をリセットします] を選択します。
[要求者は自分で行った変更を承認することができます] が選択されていない場合、pull request の作成者は引き続き pull request で [承認] に投票できますが、その投票はレビュー担当者の最少数 にはカウントされません。
いずれかのレビュー担当者が変更を拒否した場合、[一部のレビュー担当者が待機中または拒否と投票した場合でも完了を許可する] を選択しない限り、pull request は完了できません。
新しい変更がソース ブランチにプッシュされたときに、コード レビュー担当者の投票をリセットできます。 [新しい変更がある場合、コード レビュー担当者の投票をリセットする] を選択します。
他のすべてのポリシーが合格した場合、作成者は、必要な数のレビュー担当者が承認したときに PR を完了できます。
az repos policy approver-count を使用して、pull request に必要な承認者数を管理できます。
承認者数のポリシーを作成する
承認者数のポリシーを作成するには、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
完全一致で結果をフィルター処理するリポジトリの 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
Azure DevOps 組織の URL。 az devops configure -d organization=<ORG_URL>
を使用して、既定の組織を構成できます。 既定として構成されていない場合、または git config を使用して選択されていない場合は必須 です (例: https://dev.azure.com/MyOrganizationName/
)。
$
プロジェクトの名前または ID。 az devops configure -d project=<NAME_OR_ID>
を使って、既定のプロジェクトを構成できます。 既定として構成されていない場合、または git config を使用して選択されていない場合は必須 です。
subscription
サブスクリプションの名前または ID。 az account set -s <NAME_OR_ID>
を使用して、既定のサブスクリプションを構成できます。
例
次の例では、Fabrikam リポジトリの main
ブランチにおいて pull request に対する必要な承認の最少数を 2
に設定します。 このポリシーでは反対票が許可されます。つまり、承認する最少数の投票がある限り、一部のレビュー担当者が承認しない投票を行っても pull request を完了できます。 ソース ブランチにプッシュしても、投票はリセットされません。 このポリシーでは、pull request の作成者が自身の pull request を承認することもできます。
この例では、既定の構成 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。 [必須] 。
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
Azure DevOps 組織の URL。 az devops configure -d organization=<ORG_URL>
を使用して、既定の組織を構成できます。 既定として構成されていない場合、または git config を使用して選択されていない場合は必須 です (例: https://dev.azure.com/MyOrganizationName/
)。
$
プロジェクトの名前または ID。 az devops configure -d project=<NAME_OR_ID>
を使って、既定のプロジェクトを構成できます。 既定として設定されていない場合、または git config を使用して取得された場合は必須 です。
repository-id
完全一致で結果をフィルター処理するリポジトリの ID。 たとえば、「 --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345
」のように入力します。
reset-on-source-push
変更がソースにプッシュされたときに投票をリセットします。 指定できる値: false
、true
。
subscription
サブスクリプションの名前または ID。 az account set -s <NAME_OR_ID>
を使用して、既定のサブスクリプションを構成できます。
Azure DevOps CLI コマンドは、Azure DevOps Server ではサポートされていません。
リンクされた作業項目を確認する
作業項目管理の追跡 では、PR と作業項目との関連付けを要求できます。 作業項目をリンクすると、変更の追加のコンテキストが提供され、更新によって作業項目の追跡プロセスが確実に実行されます。
ポリシーを設定するには、[ブランチ ポリシー] で [リンクされた作業項目を確認します] を [オン] に設定します。 この設定では、PR がマージされるように作業項目を PR にリンクする必要があります。 リンクされた作業項目がない場合に警告を表示するものの、pull request の完了を許可するには、設定を [省略可能] にします。
Azure CLI az repos policy work-item-linking を使用して、ブランチまたはリポジトリの作業項目リンク ポリシーを作成および更新できます。
作業項目リンク ポリシーを作成する
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
完全一致で結果をフィルター処理するリポジトリの ID。 たとえば、「 --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345
」のように入力します。
branch-match-type
branch
引数を使用してポリシーを適用します。 値が exact
の場合、ポリシーは --branch
引数と完全に一致するブランチに適用されます。 値が prefix
の場合、ポリシーは、--branch
引数のプレフィックスと一致するすべてのブランチ フォルダーに適用されます。 指定できる値: exact
、prefix
。 既定値: exact
。
detect
組織を自動的に検出します。 指定できる値: false
、true
。
org
Azure DevOps 組織の URL。 az devops configure -d organization=<ORG_URL>
を使用して、既定の組織を構成できます。 既定として構成されていない場合、または git config を使用して選択されていない場合は必須 です (例: https://dev.azure.com/MyOrganizationName/
)。
$
プロジェクトの名前または ID。 az devops configure -d project=<NAME_OR_ID>
を使って、既定のプロジェクトを構成できます。 既定として構成されていない場合、または git config を使用して選択されていない場合は必須 です。
subscription
サブスクリプションの名前または ID。 az account set -s <NAME_OR_ID>
を使用して、既定のサブスクリプションを構成できます。
作業項目リンク ポリシーを更新する
az repos policy work-item-linking update を使用して、リポジトリまたは 1 つ以上のブランチの作業項目リンク ポリシーを更新します。
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。 [必須] 。
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
。
minimum-approver-count
必要な承認者の最少数。 (例: 2
)。
org
Azure DevOps 組織の URL。 az devops configure -d organization=<ORG_URL>
を使用して、既定の組織を構成できます。 既定として構成されていない場合、または git config を使用して選択されていない場合は必須 です (例: https://dev.azure.com/MyOrganizationName/
)。
$
プロジェクトの名前または ID。 az devops configure -d project=<NAME_OR_ID>
を使って、既定のプロジェクトを構成できます。 既定として設定されていない場合、または git config を使用して取得された場合は必須 です。
repository-id
完全一致で結果をフィルター処理するリポジトリの ID。 たとえば、「 --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345
」のように入力します。
subscription
サブスクリプションの名前または ID。 az account set -s <NAME_OR_ID>
を使用して、既定のサブスクリプションを構成できます。
例
次の例では、Fabrikam リポジトリの main
ブランチのポリシー ID 3
を更新して有効にしますが、これは省略可能です。 この例では、既定の構成 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 CLI コマンドは、Azure DevOps Server ではサポートされていません。
[コメント解決の有無を確認する] ポリシーでは、すべての PR コメントが解決されているかどうかを確認します。
[コメント解決の有無を確認する] を [オン] に設定して、ブランチのコメント解決ポリシーを構成します。 次に、ポリシーを [必須] にするか、[省略可能] にするかを選択します。
pull request コメントの使用の詳細については、「pull request のレビュー 」を参照してください。
[コメント解決の有無を確認する] を選択して、ブランチのコメント解決ポリシーを構成します。
pull request コメントの使用の詳細については、「pull request のレビュー 」を参照してください。
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
完全一致で結果をフィルター処理するリポジトリの ID。 たとえば、「 --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345
」のように入力します。 [必須] 。
branch-match-type
branch
引数を使用してポリシーを適用します。 値が exact
の場合、ポリシーは --branch
引数と完全に一致するブランチに適用されます。 値が prefix
の場合、ポリシーは、--branch
引数のプレフィックスと一致するすべてのブランチ フォルダーに適用されます。 指定できる値: exact
、prefix
。 既定値: exact
。
detect
組織を自動的に検出します。 指定できる値: false
、true
。
org
Azure DevOps 組織の URL。 az devops configure -d organization=<ORG_URL>
を使用して、既定の組織を構成できます。 既定として構成されていない場合、または git config を使用して選択されていない場合は必須 です (例: https://dev.azure.com/MyOrganizationName/
)。
$
プロジェクトの名前または ID。 az devops configure -d project=<NAME_OR_ID>
を使って、既定のプロジェクトを構成できます。 既定として構成されていない場合、または git config を使用して選択されていない場合は必須 です。
subscription
サブスクリプションの名前または ID。 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。 [必須] 。
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
Azure DevOps 組織の URL。 az devops configure -d organization=<ORG_URL>
を使用して、既定の組織を構成できます。 既定として構成されていない場合、または git config を使用して選択されていない場合は必須 です (例: https://dev.azure.com/MyOrganizationName/
)。
$
プロジェクトの名前または ID。 az devops configure -d project=<NAME_OR_ID>
を使って、既定のプロジェクトを構成できます。 既定として設定されていない場合、または git config を使用して取得された場合は必須 です。
repository-id
完全一致で結果をフィルター処理するリポジトリの ID。 たとえば、「 --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345
」のように入力します。
subscription
サブスクリプションの名前または ID。 az account set -s <NAME_OR_ID>
を使用して、既定のサブスクリプションを構成できます。
例
次の例では、Fabrikam リポジトリの main
ブランチのコメント解決ポリシー ID 6
を更新してブロックします。 pull request をマージするには、事前にコメントを解決しておく必要があります。 この例では、既定の構成 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 CLI コマンドは、Azure DevOps Server ではサポートされていません。
マージの種類を制限する
Azure Repos には複数のマージ戦略があり、既定では、それらのすべてが許可されます。 PR 完了のマージ戦略を適用することで、一貫したブランチ履歴を保持できます。
リポジトリで許可するマージの種類を制限するには、[マージの種類を制限する] を [オン] に設定します。
基本マージ (早送りなし) では、親がターゲット ブランチとソース ブランチであるターゲットにマージ コミットが作成されます。
スカッシュ マージ では、ソース ブランチからの変更を使用して、ターゲット ブランチに 1 つのコミットを含む線形履歴が作成されます。 スカッシュ マージ とスカッシュ マージがブランチ履歴に与える影響の詳細について確認してください。
リベースと早送り では、マージ コミットなしで、ターゲット ブランチに対してソース コミットを再生することで、線形履歴を作成します。
マージ コミットによるリベース では、ターゲットに対してソース コミットを再生し、マージ コミットも作成します。
注意
この機能は、Azure DevOps Server 2020 以降のバージョンに使用できます。
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
完全一致で結果をフィルター処理するリポジトリの ID。 たとえば、「 --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345
」のように入力します。 [必須] 。
allow-no-fast-forward
早送りのない基本マージ。 開発中に生じたとおりに、非線形履歴をそのまま保持します。 指定できる値: false
、true
。
allow-rebase
リベースと早送り。 マージ コミットせずに、ソース ブランチのコミットをターゲットに対して再生することにより線形履歴を作成します。 指定できる値: false
、true
。
allow-rebase-merge
マージ コミットによるリベース。 ターゲットに対してソース ブランチのコミットを再生し、その後マージ コミットを作成することで、半線形履歴を作成します。 指定できる値: false
、true
。
allow-squash
スカッシュ マージ。 ソース ブランチのコミットを、ターゲット ブランチで 1 つの新しいコミットにまとめることにより、線形履歴を作成します。 指定できる値: false
、true
。
branch-match-type
branch
引数を使用してポリシーを適用します。 値が exact
の場合、ポリシーは --branch
引数と完全に一致するブランチに適用されます。 値が prefix
の場合、ポリシーは、--branch
引数のプレフィックスと一致するすべてのブランチ フォルダーに適用されます。 指定できる値: exact
、prefix
。 既定値: exact
。
detect
組織を自動的に検出します。 指定できる値: false
、true
。
org
Azure DevOps 組織の URL。 az devops configure -d organization=<ORG_URL>
を使用して、既定の組織を構成できます。 既定として構成されていない場合、または git config を使用して選択されていない場合は必須 です (例: https://dev.azure.com/MyOrganizationName/
)。
$
プロジェクトの名前または ID。 az devops configure -d project=<NAME_OR_ID>
を使って、既定のプロジェクトを構成できます。 既定として構成されていない場合、または git config を使用して選択されていない場合は必須 です。
subscription
サブスクリプションの名前または ID。 az account set -s <NAME_OR_ID>
を使用して、既定のサブスクリプションを構成できます。
use-squash-merge
常にスカッシュ マージ。 このオプションは、他のマージの種類には使用できません。 指定できる値: false
、true
。注 : use-squash-merge
は非推奨となりました。今後のバージョンからは削除されます。 代わりに --allow-squash
を使用してください
例
次の例では、Fabrikam リポジトリの main
ブランチにおける pull request に対して必要なマージ戦略を設定して、スカッシュ マージを可能にします。 この例では、既定の構成 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。 [必須] 。
allow-no-fast-forward
早送りのない基本マージ。 開発中に生じたとおりに、非線形履歴をそのまま保持します。 指定できる値: false
、true
。
allow-rebase
リベースと早送り。 マージ コミットせずに、ソース ブランチのコミットをターゲットに対して再生することにより線形履歴を作成します。 指定できる値: false
、true
。
allow-rebase-merge
マージ コミットによるリベース。 ターゲットに対してソース ブランチのコミットを再生し、その後マージ コミットを作成することで、半線形履歴を作成します。 指定できる値: false
、true
。
allow-squash
スカッシュ マージ。 ソース ブランチのコミットを、ターゲット ブランチで 1 つの新しいコミットにまとめることにより、線形履歴を作成します。 指定できる値: 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
Azure DevOps 組織の URL。 az devops configure -d organization=<ORG_URL>
を使用して、既定の組織を構成できます。 既定として構成されていない場合、または git config を使用して選択されていない場合は必須 です (例: https://dev.azure.com/MyOrganizationName/
)。
$
プロジェクトの名前または ID。 az devops configure -d project=<NAME_OR_ID>
を使って、既定のプロジェクトを構成できます。 既定として設定されていない場合、または git config を使用して取得された場合は必須 です。
repository-id
完全一致で結果をフィルター処理するリポジトリの ID。 たとえば、「 --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345
」のように入力します。
subscription
サブスクリプションの名前または ID。 az account set -s <NAME_OR_ID>
を使用して、既定のサブスクリプションを構成できます。
use-squash-merge
常にスカッシュ マージするかどうか。 このオプションは、他のマージの種類では機能しません。 指定できる値: false
、true
。
Azure DevOps CLI コマンドは、Azure DevOps Server ではサポートされていません。
マージ戦略を適用する
pull request が完了するときにマージ戦略を適用することで、一貫したブランチ履歴を保持します。
[マージ戦略を適用する] を選択し、その戦略を使用して pull request のマージを要求するオプションを選択します。
早送りなしのマージ - このオプションは、pull request が閉じられ、ターゲット ブランチでマージ コミットが作成されるときに、ソース ブランチのコミット履歴をマージします。
スカッシュ マージ - スカッシュ マージを使用してすべての pull request を完了して、ソース ブランチからの変更を使用してターゲット ブランチに 1 つのコミットを作成します。 スカッシュ マージ とスカッシュ マージがブランチ履歴に与える影響の詳細について確認してください。
ビルドの検証
PR が完了する前に PR の変更が正常にビルドされることを要求するポリシーを設定できます。
ビルド ポリシーは、中断を減らし、テスト結果が合格し続けるようにします。 開発ブランチで継続的インテグレーション (CI) を使用して問題を早期に検出する場合であっても、ビルド ポリシーは役立ちます。
ビルド検証ポリシーは、新しい PR が作成されるか、ブランチを対象とする既存の PR に変更がプッシュされたときに、新しいビルドをキューに入れます。 ビルド ポリシーはビルド結果を評価して、PR を完了できるかどうかを判別します。
重要
ビルド検証ポリシーを指定する前に、ビルド パイプラインが必要です。 パイプラインがない場合は、ビルド パイプラインの作成 に関するページを参照してください。 お使いのプロジェクトの種類に一致するビルドの種類を選択します。
ビルド検証ポリシーを追加するには
[ビルドの検証] の横にある + ボタンを選択します。
[Set build policy] (ビルド ポリシーの設定) フォームに入力します。
[ビルド パイプライン] を選択します。
必要に応じて、[パス フィルター] を設定します。 ブランチ ポリシーにおけるパス フィルターの詳細を参照してください 。
[トリガー] の下で、[自動 (ソース ブランチの更新時)] または [手動] を選択します。
[ポリシー要件] の下で、[必須] または [省略可能] を選択します。 [必須] を選択した場合、PR を完了するにはビルドが正常に完了する必要があります。 [省略可能] を選択すると、ビルド エラーの通知が表示されますが、PR の完了は引き続き可能です。
ビルドの有効期限を設定して、保護されたブランチの更新が、開いている PR の変更を中断しないようにします。
<branch name> が更新されたらすぐ : このオプションは、ブランチが更新されるたびに PR ビルド ポリシーの状態を "失敗" に設定し、ビルドを再度キューに入れます。 この設定により、保護されたブランチが変更された場合でも PR の変更が正常にビルドされます。
このオプションは、重要なブランチに変更がほとんどないチームに最適です。 ビジー状態の開発ブランチで作業しているチームにとっては、ブランチが更新されるたびにビルドを待機すると混乱を招く場合があります。
<branch name> が更新されてから <n> 時間後 : このオプションは、合格したビルドが入力したしきい値より古い場合、保護されたブランチが更新されたときに現在のポリシーの状態の有効期限が切れます。 このオプションは、保護されたブランチが更新されたときにビルドを常に要求するか、要求しないかの間の妥協を表しています。 この選択により、保護されたブランチが頻繁に更新される場合のビルド数が減ります。
なし : 保護されたブランチを更新しても、ポリシーの状態は変わりません。 この値によりビルド数が減りますが、最近更新されていない PR の完了時に問題が生じる可能性があります。
このビルド ポリシーの表示名 (省略可能) を入力します。 この名前は、[ブランチ ポリシー] ページでポリシーを識別します。 表示名を指定しない場合、ポリシーではビルド パイプライン名が使用されます。
[保存] を選択します。
PR の所有者が正常にビルドされた変更をプッシュすると、ポリシーの状態が更新されます。
<[branch name> が更新されたらすぐ] または [<branch name> が更新されてから <n> 時間後] ビルド ポリシーがある場合、以前のビルドが有効でなくなった場合、保護されたブランチが更新されるとポリシーの状態が更新されます。
注意
この機能は、Azure DevOps Server 2020 以降のバージョンに使用できます。
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
ビルド定義 ID。 [必須] 。
display-name
ポリシーを識別するための、このビルド ポリシーの表示名。 (例: Manual queue policy
)。 [必須] 。
enabled
ポリシーを有効にします。 指定できる値: false
、true
。 [必須] 。
manual-queue-only
ビルドの手動キューのみを許可するかどうか。 指定できる値: false
、true
。 [必須] 。
queue-on-source-update-only
ソースの更新時にのみビルドをキューに入れるかどうか。 指定できる値: false
、true
。 [必須] 。
repository-id
完全一致で結果をフィルター処理するリポジトリの ID。 たとえば、「 --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345
」のように入力します。 [必須] 。
valid-duration
ポリシーの有効期間 (分数)。 注: valid-duration
は 0 から 1 年の間でなければなりません。--queue-on-source-update-only
が false
の場合は 0 である必要があります。 [必須] 。
branch-match-type
branch
引数を使用してポリシーを適用します。 値が exact
の場合、ポリシーは --branch
引数と完全に一致するブランチに適用されます。 値が prefix
の場合、ポリシーは、--branch
引数のプレフィックスと一致するすべてのブランチ フォルダーに適用されます。 指定できる値: exact
、prefix
。 既定値: exact
。
detect
組織を自動的に検出します。 指定できる値: false
、true
。
org
Azure DevOps 組織の URL。 az devops configure -d organization=<ORG_URL>
を使用して、既定の組織を構成できます。 既定として構成されていない場合、または git config を使用して取得した場合は必須 です (例: https://dev.azure.com/MyOrganizationName/
)。
path-filter
ポリシーを適用するパスが適用されます。 絶対パス、ワイルドカード、および ;
で区切られた複数のパスをサポートします。 例: /WebApp/Models/Data.cs
、/WebApp/*
、*.cs,
、または /WebApp/Models/Data.cs;ClientApp/Models/Data.cs
。
$
プロジェクトの名前または ID。 az devops configure -d project=<NAME_OR_ID>
を使って、既定のプロジェクトを構成できます。 既定として構成されていない場合、または git config を使用して選択されていない場合は必須 です。
subscription
サブスクリプションの名前または ID。 az account set -s <NAME_OR_ID>
を使用して、既定のサブスクリプションを構成できます。
例
次の例では、Fabrikam リポジトリの main
ブランチにおける pull request に対して必要なビルド ポリシーを設定します。 このポリシーでは、ビルド定義 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。 [必須] 。
blocking
ポリシーが満たされていない場合はブロックします。 指定できる値: false
、true
。
branch
完全一致で結果をフィルター処理するブランチ名。 ブランチ フィルターを使用するには、--repository-id
パラメーターが必要です。 (例: --branch main
)。
branch-match-type
branch
引数を使用してポリシーを適用します。 値が exact
の場合、ポリシーは --branch
引数と完全に一致するブランチに適用されます。 値が prefix
の場合、ポリシーは、--branch
引数のプレフィックスと一致するすべてのブランチ フォルダーに適用されます。 指定できる値: exact
、prefix
。 既定値: exact
。
build-definition-id
ビルド定義 ID。
detect
組織を自動的に検出します。 指定できる値: false
、true
。
display-name
ポリシーを識別するための、このビルド ポリシーの表示名。 (例: Manual queue policy
)。
enabled
ポリシーを有効にします。 指定できる値: false
、true
。
manual-queue-only
ビルドの手動キューのみを許可するかどうか。 指定できる値: false
、true
。
org
Azure DevOps 組織の URL。 az devops configure -d organization=<ORG_URL>
を使用して、既定の組織を構成できます。 既定として構成されていない場合、または git config を使用して取得した場合は必須 です (例: https://dev.azure.com/MyOrganizationName/
)。
path-filter
ポリシーを適用するパスが適用されます。 絶対パス、ワイルドカード、および ;
で区切られた複数のパスをサポートします。 例: /WebApp/Models/Data.cs
、/WebApp/*
、*.cs,
、または /WebApp/Models/Data.cs;ClientApp/Models/Data.cs
。
$
プロジェクトの名前または ID。 az devops configure -d project=<NAME_OR_ID>
を使って、既定のプロジェクトを構成できます。 既定として設定されていない場合、または git config を使用して取得された場合は必須 です。
queue-on-source-update-only
ソースの更新時にのみビルドをキューに入れるかどうか。 指定できる値: false
、true
。
repository-id
完全一致で結果をフィルター処理するリポジトリの ID。 たとえば、「 --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345
」のように入力します。
subscription
サブスクリプションの名前または ID。 az account set -s <NAME_OR_ID>
を使用して、既定のサブスクリプションを構成できます。
valid-duration
ポリシーの有効期間 (分数)。
Azure DevOps CLI コマンドは、Azure DevOps Server ではサポートされていません。
pull request を完了する前に、保護されたブランチを使用して pull request の変更が正常にビルドされることを要求するポリシーを設定します。
ビルド ポリシーは、中断を減らし、テスト結果が合格し続けるようにします。 開発ブランチで継続的インテグレーション (CI) を使用して問題を早期に検出する場合であっても、ビルド ポリシーは役立ちます。
ビルド検証ポリシーが有効になっている場合、新しい pull request が作成されたとき、またはブランチを対象とする既存の pull request に変更がプッシュされる場合、新しいビルドがキューに入れられます。 ビルド ポリシーはビルドの結果を評価して、pull request を完了できるかどうかを判別します。
重要
ビルド検証ポリシーを指定する前に、ビルド定義が必要です。 ない場合は、ビルド定義の作成 に関するページを参照し、お使いのプロジェクトの種類に一致するビルドの種類を選択してください。
[ビルド ポリシーの追加] を選択し、[ビルド ポリシーの追加] でオプションを構成します。
[ビルド定義] を選択します。
[トリガー] の種類を選択します。 [自動 (ソース ブランチの更新時)] または [手動] を選択します。
[ポリシー要件] を選択します。 [必須] を選択した場合、pull request を完了するにはビルドが正常に完了する必要があります。 [省略可能] を選択すると、ビルド エラーの通知が表示されますが、pull request の完了は引き続き可能です。
ビルドの有効期限を設定して、保護されたブランチの更新が開いている pull request の変更を中断しないようにします。
branch name
が更新されたらすぐ : このオプションは、保護されたブランチが更新されたときに pull request のビルド ポリシー状態を "失敗" に設定します。 ビルドを再度キューに入れてビルドの状態を更新します。 この設定により、保護されたブランチが変更された場合でも pull request の変更が正常にビルドされます。 このオプションは、変更の量が少ない重要なブランチがあるチームに最適です。 ビジー状態の開発ブランチで作業しているチームにとっては、保護されたブランチが更新されるたびにビルドの完了を待機すると混乱を招く場合があります。
branch name
が更新されてから n
時間後 : このオプションは、合格したビルドが入力されたしきい値より古い場合、保護されたブランチが更新されたときに現在のポリシーの状態の有効期限が切れます。 このオプションは、保護されたブランチが更新されたときにビルドを常に要求するか、要求しないかの間の妥協を表しています。 この選択肢は、保護されたブランチが頻繁に更新される場合にビルド数を削減するのに優れています。
なし : 保護されたブランチを更新しても、ポリシーの状態は変わりません。 この値により、ブランチのビルド数が減ります。 最近更新されていない pull request を閉じるときに問題が生じる可能性があります。
このビルド ポリシーの表示名 (省略可能) を入力します。 この名前は、[ブランチ ポリシー] ページでポリシーを識別します。 表示名を指定しない場合、ポリシーではビルド定義名が使用されます。
[保存] を選択します。
所有者が正常にビルドされた変更をプッシュすると、ポリシーの状態が更新されます。 [branch name
が更新されたらすぐ] または [branch name
が更新されてから n
時間後] ビルド ポリシーが選択されている場合、最新のビルドが有効でなくなった場合、保護されたブランチが更新されるとポリシーの状態が更新されます。
状態の確認
外部サービスでは、PR Status API を使用して、詳細な状態を PR に投稿できます。 追加サービスのブランチ ポリシーにより、外部のサービスが PR ワークフローに参加し、ポリシー要件を確立できるようになります。
このポリシーの構成手順については、「外部サービスのブランチ ポリシーを構成する 」を参照してください。
外部サービスに承認を求める
外部サービスでは、PR Status API を使用して、詳細な状態を PR に投稿できます。 追加サービスのブランチ ポリシーでは、外部のサービスが PR ワークフローに参加し、ポリシー要件を確立できます。
このポリシーの構成手順については、「外部サービスのブランチ ポリシーを構成する 」を参照してください。
コードのレビュー担当者を自動的に含める
特定のディレクトリとファイル内のファイルを変更する pull request、またはリポジトリ内のすべての pull request に、レビュー担当者を自動的に追加できます。
[自動的に追加されるレビュー担当者] の横にある + ボタンを選択します。
[新しいレビュー担当者ポリシーの追加] 画面に入力します。
[レビュー担当者] にユーザーとグループを追加します。
レビュー担当者を自動的に追加するものの、pull request を完了するために承認を必要としない場合は、[省略可能] を選択します。
または、次の時点まで pull request を完了できない場合は、[必須] を選択します。
レビュー担当者として追加されたすべての個人が変更を承認する。
レビュー担当者として追加されたすべてのグループの少なくとも 1 人のユーザーが変更を承認する。
必要なグループが 1 つだけの場合は、指定した最少数のメンバーが変更を承認する。
自動的に追加されるレビュー担当者を必要とするファイルとフォルダーを指定します。 ブランチ内のすべての pull request にレビュー担当者を要求するには、このフィールドを空白のままにします。
pull request の所有者が、このポリシーを満たすために自分の pull request を承認する投票ができる場合は、[要求者が自分の変更を承認することを許可する] を選択します。
pull request に表示される [アクティビティ フィード メッセージ] を指定できます。
[保存] を選択します。
注意
この機能は、Azure DevOps Server 2020 以降のバージョンに使用できます。
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
pull request に表示されるアクティビティ フィード メッセージ。 必須。
repository-id
完全一致で結果をフィルター処理するリポジトリの 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
Azure DevOps 組織の URL。 az devops configure -d organization=<ORG_URL>
を使用して、既定の組織を構成できます。 既定として構成されていない場合、または git config を使用して取得した場合は必須 です (例: https://dev.azure.com/MyOrganizationName/
)。
path-filter
ポリシーを適用するパスが適用されます。 絶対パス、ワイルドカード、および ;
で区切られた複数のパスをサポートします。 例: /WebApp/Models/Data.cs
、/WebApp/*
、*.cs,
、または /WebApp/Models/Data.cs;ClientApp/Models/Data.cs
。
$
プロジェクトの名前または ID。 az devops configure -d project=<NAME_OR_ID>
を使って、既定のプロジェクトを構成できます。 既定として構成されていない場合、または git config を使用して選択されていない場合は必須 です。
subscription
サブスクリプションの名前または ID。 az account set -s <NAME_OR_ID>
を使用して、既定のサブスクリプションを構成できます。
例
次の例では、Fabrikam リポジトリの main
ブランチにおける pull request に必要なレビュー担当者として Jamal Hartnett を設定します。 この例では、既定の構成 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。 [必須] 。
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
pull request に表示されるアクティビティ フィード メッセージ。
org
Azure DevOps 組織の URL。 az devops configure -d organization=<ORG_URL>
を使用して、既定の組織を構成できます。 既定として構成されていない場合、または git config を使用して取得した場合は必須 です (例: https://dev.azure.com/MyOrganizationName/
)。
path-filter
ポリシーを適用するパスが適用されます。 絶対パス、ワイルドカード、および ;
で区切られた複数のパスをサポートします。 例: /WebApp/Models/Data.cs
、/WebApp/*
、*.cs,
、または /WebApp/Models/Data.cs;ClientApp/Models/Data.cs
。
$
プロジェクトの名前または ID。 az devops configure -d project=<NAME_OR_ID>
を使って、既定のプロジェクトを構成できます。 既定として設定されていない場合、または git config を使用して取得された場合は必須 です。
repository-id
完全一致で結果をフィルター処理するリポジトリの ID。 たとえば、「 --repository-ID e556f204-53c9-4153-9cd9-ef41a11e3345
」のように入力します。
required-reviewer-ids
;
で区切られたレビュー担当者のメール アドレス。 (例: john@contoso.com;alice@contoso.com
)。
subscription
サブスクリプションの名前または ID。 az account set -s <NAME_OR_ID>
を使用して、既定のサブスクリプションを構成できます。
Azure DevOps CLI コマンドは、Azure DevOps Server ではサポートされていません。
リポジトリ内の特定のディレクトリとファイルのレビュー担当者を選択します。
これらのレビュー担当者は、それらのパスに沿ってファイルを変更する pull request に自動的に追加されます。 また、[アクティビティ フィード メッセージ] を指定することもできます。
[必須] を選択した場合、pull request は次の時点まで完了できません。
パスのレビュー担当者として追加されたすべてのユーザーが変更を承認する。
パスに追加されたすべてのグループの少なくとも 1 人のユーザーが変更を承認する。
パスに追加されたすべてのグループに対して指定された数のレビュー担当者が、変更を承認する。
レビュー担当者を自動的に追加するものの、pull request を完了するために承認を必要としない場合は、[省略可能] を選択します。
[要求者は自分で行った変更を承認することができます] を選択できます。
必要なすべてのレビュー担当者がコードを承認したら、pull request を完了できます。
ブランチ ポリシーをバイパスする
場合によっては、ポリシー要件をバイパスすることが必要になる場合があります。 バイパス アクセス許可があると、変更をブランチに直接プッシュしたり、ブランチ ポリシーを満たさない pull request を完了したりできます。 ユーザーまたはグループにバイパス アクセス許可を付与できます。 バイパス アクセス許可のスコープをプロジェクト全体、リポジトリ、または単一のブランチに設定できます。
次の 2 つのアクセス許可を使用すると、ユーザーはブランチ ポリシーを異なる方法でバイパスできます。
[Pull requests を完了するときに、ポリシーをバイパスする] は、pull request の完了のみに適用されます。 このアクセス許可を持つユーザーは、pull request がポリシーを満たしていない場合でも、pull request を完了できます。
[プッシュするときにポリシーをバイパスする] は、ローカル リポジトリからのプッシュと Web 上で行われた編集に適用されます。 このアクセス許可を持つユーザーは、ポリシー要件を満たさずに、保護されたブランチに変更を直接プッシュできます。
これらのアクセス許可の管理の詳細については、Git アクセス許可 に関するページを参照してください。
TFS 2015 から TFS 2018 Update 2 では、[ポリシーの適用から除外] アクセス許可により、このアクセス許可を持つユーザーは次のアクションを実行できます。
現在のブランチ ポリシー セットが満たされていない場合でも、ポリシーをオーバーライドしてプル リクエストを完了するようにオプトインします。
そのブランチにブランチ ポリシーが設定されている場合でも、ブランチに直接プッシュします。 このアクセス許可を持つユーザーがブランチ ポリシーをオーバーライドするプッシュを行うと、プッシュによってオプトイン ステップまたは警告なしでブランチ ポリシーが自動的にバイパスされることに注意してください。
重要
特にリポジトリ レベルとプロジェクト レベルでポリシーをバイパスする機能を付与する場合は注意してください。 ポリシーは、安全で準拠したソース コード管理の基礎となります。
パス フィルター
いくつかのブランチ ポリシーでは、パス フィルターが提供されます。 パス フィルターが設定されている場合、ポリシーはパス フィルターに一致するファイルのみに適用されます。 このフィールドを空白のままにすると、ブランチ内のすべてのファイルにポリシーが適用されます。
絶対パス (パスは /
またはワイルドカードで始まる必要があります) とワイルドカードを指定できます。
例 :
/WebApp/Models/Data.cs
/WebApp/*
*/Models/Data.cs
*.cs
;
を区切り記号として使用して複数のパスを指定できます。
例:
/WebApp/Models/Data.cs;/ClientApp/Models/Data.cs
先頭に !
が付いているパスは、本来なら組み込まれているはずの場合でも除外されます。
例:
/WebApp/*;!/WebApp/Tests/*
には、/WebApp/Tests
のファイルを除く、/WebApp
のすべてのファイルが含まれます
!/WebApp/Tests/*
は、先頭に何も含まれていないため、指定されるファイルがありません
フィルターの順序が重要です。 フィルターは左から右に適用されます。
Q & A
ブランチ ポリシーがあるブランチに変更を直接プッシュできますか?
ブランチ ポリシーをバイパスする アクセス許可がない限り、必須 ブランチ ポリシーがあるブランチに変更を直接プッシュすることはできません。 これらのブランチに対する変更は、pull request を介してのみ行うことができます。 必須ブランチ ポリシーがない場合は、"省略可能" ブランチ ポリシーがあるブランチに変更を直接プッシュできます。
オートコンプリートとは何ですか?
ブランチ ポリシーが構成されたブランチへの pull request には、[オートコンプリートの設定] ボタンがあります。 すべてのポリシーを満たしたら pull request を自動的に完了する には、このオプションを選択します。 オートコンプリートは、変更に関する問題が予想されない場合に便利です。
ブランチ ポリシーの条件はいつチェックされますか?
ブランチ ポリシーは、pull request の所有者が変更をプッシュするとき、およびレビュー担当者が投票するときに、サーバーで再評価されます。 ポリシーによってビルドがトリガーされた場合、ビルドの状態は、ビルドが完了するまで待機中に設定されます。
ブランチ ポリシーで XAML ビルド定義を使用できますか?
いいえ、ブランチ ポリシーで XAML ビルド定義を使用できません。
必要なコード レビュー担当者に使用できるワイルドカード文字は何ですか?
1 つのアスタリスク *
は、スラッシュ /
とバックスラッシュ \
の両方を含む任意の数の文字と一致します。 疑問符 ?
は、任意の 1 文字と一致します。
例 :
*.sql
は、.sql 拡張子を持つすべてのファイルと一致します。
/ConsoleApplication/*
は、ConsoleApplication という名前のフォルダーにあるすべてのファイルと一致します。
/.gitattributes
は、リポジトリのルートにある .gitattributes* ファイルと一致します。
*/.gitignore
は、リポジトリ内のすべての .gitignore ファイルと一致します。
必要なコード レビュー担当者のパスには大文字と小文字の区別がありますか?
いいえ。ブランチ ポリシーには、大文字と小文字の区別がありません。
ユーザーをグループに追加 してから、そのグループをレビュー担当者として追加できます。 その後、グループの任意のメンバーが承認してポリシー要件を満たすことができます。
ポリシーをバイパスするアクセス許可があります。 pull request の状態でポリシー エラーが引き続き表示されるのはなぜですか?
構成されたポリシーは、pull request の変更がないか常に評価されます。 ポリシーをバイパスするアクセス許可を持つユーザーの場合、報告されるポリシーの状態はアドバイザリのみです。 バイパス アクセス許可を持つユーザーが承認する場合、エラー状態により pull request の完了がブロックされません。
[要求者が自分の変更を承認することを許可する] が設定されているときに、自分の pull request を完了できないのはなぜですか?
[レビュー担当者の最少数が必要です] ポリシーと [自動的に追加されるレビュー担当者] ポリシーの両方に、[要求者が自分の変更を承認することを許可する] オプションがあります。 各ポリシーで、設定はそのポリシーにのみ適用されます。 この設定は、他のポリシーには影響を与えません。
たとえば、pull request には次のポリシーが設定されます。
[レビュー担当者の最少数が必要です] には、少なくとも 1 人のレビュー担当者が必要です。
[自動的に追加されるレビュー担当者] には、自分または自分が参加しているチームがレビュー担当者として必要です。
[自動的に追加されるレビュー担当者] では、[要求者が自分の変更を承認することを許可する] が有効になっています。
[レビュー担当者の最少数が必要です] では、[要求者が自分の変更を承認することを許可する] が有効になっていません。
この場合、承認では [自動的に追加されるレビュー担当者] を満たしますが、[レビュー担当者の最少数が必要です] を満たさないため、pull request を完了できません。
また、[要求者が自分の変更を承認することを許可する] が設定されている場合でも自分の変更を承認できないようにする他のポリシー ([最新のプッシュ元が自分の変更を承認することを禁止する] など) もあります。
パス フィルター内のパスの先頭に /
もワイルドカードもない場合、どうなりますか?
先頭に /
もワイルドカードも付かないパス フィルターのパスは無効です。そのパスが指定されなかった場合と同じようにパス フィルターが評価されます。 このようなパスは、絶対ファイル パスの先頭にある /
と一致しません。
関連記事