[アップデート] Amazon CodeCatalyst でプルリクエストの承認ルールを設定出来るようになりました

2024.02.19

いわさです。

先日のアップデートで Amazon CodeCatalyst でプルリクエストの承認ルールが設定出来るようになりました。

そうかこれがまだ無かったのかという感じでしたが、チーム開発を行う上で組織によっては必要となる機能だと思います。
本日実際に設定して使ってみたので何が設定出来るのか、どういう挙動になるのかを紹介します。

承認ルールの設定方法

設定方法なのですが、GitHub の保護ブランチのようなルールベースでの設定になるのかなと思いきや、リポジトリのブランチごとに個別に設定が必要です。
これは、将来的にブランチ名などのルールベースでワークスペース全体に適用するとか、組織のブランチ戦略にあわせた設定が出来るようになりたいですね。

本日時点では、各プロジェクトのリポジトリを開き、さらにそれぞれのブランチごとに設定を行います。

ブランチを開いたあと、「Manage settings」からブランチ設定が可能ですが、この設定はリポジトリ内のブランチを横断して設定することが出来るので、どのブランチから開始しても大丈夫です。

ブランチ設定機能から、「Approval rules」の Edit ボタンを押します。

そうすると承認ルールを設定することが出来ます。
本日時点で設定出来るのは、「Minimum number of approvals」のみです。
ロールやユーザーを指定して承認者の指定を必須にするとか、そういった制御は出来ず、プルリクエストの承認者の最低人数を設定することが出来ます。
デフォルトは 0 で、リポジトリ共通の設定ではなくてブランチごとに最低人数を設定することが出来ます。

ちなみに、マージが出来るロールを指定する場合はこちらではなく Branch rules で設定する形となります。

任意の人数を設定可能なのですが、対象プロジェクトのメンバー以上の数値を設定することは出来ません。

設定状況はブランチ一覧の Approval rules 列で確認が可能です。

また、この設定はブランチ個別となっており、新規ブランチを作成しても派生元ブランチの設定は引き継がないようです。先ほど最低承認者数を設定したブランチから新しいブランチを作成してみたのですが、承認ルールが未設定の状態でした。
個別に毎回設定が必要です。ふむ。

プルリクエスト時の挙動を確認

承認ルールが設定されたブランチを対象とするプルリクエストを作成してみました。
誰も承認していない状態だと次のようにマージボタンが押せないですね。
また、プルリクエスト名の右には「Not mergeable」の表示があり、詳細として承認ルールを満たす必要がある旨を確認することが出来ます。

別のユーザーでプルリクエストの承認を行ったところ、「Mergeable」にステータスが変わり、マージボタンが押せるようになりました。

プロジェクト管理者ロールを持っているユーザーの場合は承認ルールを無視出来る

プロジェクト管理者ロールのユーザーの場合はプルリクエストのマージボタンのオプションとして、「Override approval requirements」という操作を行うことが出来ます。

この機能を使うと承認者数がルールを満たしていなくてもマージ操作を行うことが出来ます。
ただし、この機能を使う場合は前述のとおり管理者ロールである必要があるのと、次の Override Reason フィールドに承認ルールをオーバーライドする理由をコメントする必要があります。このコメントを入力しない場合はマージ操作に失敗します。

さいごに

本日は Amazon CodeCatalyst でプルリクエストの承認ルールを設定出来るようになったので確認してみました。

これまで設定出来ないのを知らなかったのですが、まずは最低限のルール設定が出来るようになったという感じでしょうか。
対象ブランチのルールを柔軟に設定したり GitHub のブランチ保護機能のようなものが今後のアップデートで追加されるとさらに使いやすくなりそうですね。