🌳

Azure Reposで大事なブランチを守るためにできること

に公開
1

Pull Requestなしでは変更をマージできないようにする

保護したいブランチの・・・からBranch policiesを選択すると、

そのブランチの設定画面に遷移します。

ここでは、以下の設定が可能です。

  • Require a minimum number of reviewers(レビューアの最低人数を要求)
    PRの承認に必要なレビューアの人数を指定するポリシーです。設定を有効にすると、指定した人数のレビューアが承認しない限り、プルリクエストはマージできません。

自分のPRを自分で承認、をブロックしたい場合は、'Allow requesters to approve their own change'をOFFにしてください。

この設定にして、対象のブランチに直コミットしようとするとちゃんとPRを作ってね的なメッセージが出て、コミットできなくなります。

PRを作って自分でApproveしてコミットしようとした場合は、ちゃんとレビューを受けてくださいね的なメッセージが出て、PRはマージできないようになります

それでも心配な場合

「この人のレビューは絶対に通す必要がある」という場合は、下のAutomatically included reviewersの+を押下して、

レビューしてほしい人を追加してRequiredに設定します。

更に、以下のような制御も可能です。必要に応じてONにしてください。

  • Check for linked work items(関連する作業項目の確認)
    PRに関連する作業項目がリンクされているかを確認するポリシーです。
    設定を有効にすると、PRが作業項目にリンクされていない場合に警告が表示され、リンクがないとマージができなくなります。どの作業に対してどんな変更をしたかを厳密にトラックするために有効です。

  • Check for comment resolution(コメントの解決を確認)
    PR内で追加されたコメントがすべて解決されているかを確認するポリシーです。設定を有効にすると、コメントが未解決のままではPRをマージできなくなります。

  • Limit merge types(マージタイプの制限)
    ルリクエストのマージ時に使用できるマージの種類を制限するポリシーです。たとえば、「Merge commit」「Squash merge」「Rebase and merge」など、特定のマージ方法だけを許可することができます。

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

Pipelineによるチェックを強制

Azure Pieplinesのベースラインアーキテクチャでは、PR作成をトリガーとして動くPR Pipelineによって、自動ビルド、単体テスト、静的コード解析を実施することが推奨されています。

これを実現するためには、上記のような処理を実行するPipelinesをAzure Pipelinesで作成し、そのPipelinesをブランチポリシーの設定画面のBuild Policyから追加する必要があります。

ここでBuild Pipelinesの箇所でチェックを実行するPipelinesを選択し、Policy requirementをRequiredにすると、このPipelinesのチェックを完了しないとPRがマージできなくなります。

Azure Pipelinesのベースラインアーキテクチャに則ったPipelinesの詳しい作り方はこちらをご覧ください。
https://zenn.dev/yuriemori/articles/5f89bb5403485e

Discussion