😀

Azure Repos のブランチポリシーを Azure CLI で設定してみた

に公開

デフォルトブランチに直接プッシュするのを禁止して、別のブランチからプルリクエストを経てデフォルトブランチにマージする、という開発チームのルールがあったとします。これを master とか main とかに設定しているデフォルトブランチ共通のブランチポリシーを Azure Repos のプロジェクトに対して Azure CLI で設定してみます。

現状のブランチポリシーの確認

ポリシーは設定されておらず、JSON の中身は空です。

bash
$ az repos policy list \
  --org https://dev.azure.com/mnrsdev/ \
  --project mnrror
[]

ブランチポリシー JSON を作成

type.id は "Minimum number of reviewers" の ID です。

branch-policy.json
{
  "isEnabled": true,
  "isBlocking": true,
  "type": {
    "id": "fa4e907d-c16b-4a4c-9dfa-4906e5d171dd"
  },
  "settings": {
    "minimumApproverCount": 1,
    "creatorVoteCounts": true,
    "scope": [
      {
        "repositoryId": null,
        "refName": null,
        "matchKind": "DefaultBranch"
      }
    ]
  }
}

ブランチポリシーを登録

bash
$ az repos policy create \
  --org https://dev.azure.com/mnrsdev/ \
  --project mnrror \
  --config branch-policy.json

ブランチポリシーの設定を確認

デフォルトブランチのブランチポリシーが作成されました。

image.png

最低一人以上のレビューを経ないとデフォルトブランチにマージできなくなりました。

またプルリクエストした人とレビューする人が同じでも良いように "Allow requestors to approve their own changes" をオンにしています。

image.png

参考

https://learn.microsoft.com/ja-jp/azure/devops/repos/git/branch-policies?view=azure-devops&tabs=azure-devops-cli

https://learn.microsoft.com/ja-jp/rest/api/azure/devops/policy/configurations/create?view=azure-devops-rest-7.0&tabs=HTTP#examples

Discussion