[アップデート]CodeCommitでプルリクエストの承認ルールワークフローを試してみた

CodeCommitにプルリクエストの承認ルールワークフロー機能が追加されたので試してみました。

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは、AWS事業本部のニシヤマです。はいマスキュラー。

先日、CodeCommitでプルリクエストの承認ルールワークフローが利用できる様になったので試してみました。

どうなった

以前からCodeCommitでプルリクエストはできていましたが、今回のアップデートによりプルリクエスト専用の承認ルールを作成することで、一定数以上または特定ユーザーの承認を得た場合にのみコードをマージさせる様に強制することができる様になりました。

https://aws.amazon.com/about-aws/whats-new/2019/11/aws-codecommit-enables-enforcing-approval-rule-workflows-for-pull-requests/

前提

今回は以下の前提で進めます。

  • CodeCommitリポジトリ(TestRepository)が作成されていること
  • プルリクエスト作成用IAMユーザ(CodeCommit-User1)が作成されていること
  • プルリクエスト承認用IAMユーザ(CodeCommit-Reviewer1、CodeCommit-Reviewer2)が作成されていること
  • 上記IAMユーザに適切な権限が付与されていること

やってみる

承認ルールテンプレートの作成

それでは承認ルールテンプレートを作成していきます。

マネジメントコンソールでCodeCommitの画面にアクセスすると左のメニューに承認ルールテンプレートが追加されていました。

テンプレートを作成をクリックして以下を入力して、作成をクリックします。今回はmasterブランチへのマージの際に承認を必要とさせたいため、ブランチフィルターにmasterを入力します。

  • 承認ルールテンプレート名:Require 2 Apploval
  • 説明:任意
  • 必要な承認の数:2
  • ブランチフィルター(オプション):master
  • 関連付けられたリポジトリ:TestRepository

今回は利用しませんが、オプションで承認プールのメンバーからIAMユーザなどを指定することにより特定のメンバーに承認を依頼することも可能です。

これで承認ルールテンプレートの作成と、リポジトリへの関連付けが完了しました。

これで準備完了です。

プルリクエストを作成する

それではプルリクエストを作成してマージしていきましょう。

【新機能】CodeCommit でプルリクエストがサポートされました

上記を参考にプルリクエストの作成をしていきます。この作業はプルリクエスト作成用IAMユーザCodeCommit-User1で実施します。

まずはローカルマシンなどでファイル作成し、masterブランチに適当なファイルを追加します。

次に新しいブランチを作成します。

update-approvalブランチが作成されました。

ローカルマシンなどでupdate-approvalブランチに切り替えファイルを編集し、リモートリポジトリにPushします。

それではプルリクエストを作成します。右上のCreate pull requestをクリックします。

プルリクエストの作成画面で変更内容を確認し、タイトルと説明を入力し右下のCreate pull requestをクリックします。

それではプルリクエストを確認してみます。

承認ルールが無いリポジトリであればプルリクエストを閉じるの隣にマージのボタンが表示されているのですが、何も表示されていません。

プルリクエストを承認してマージする

ここからは、プルリクエスト承認用IAMユーザで作業します。

CodeCommit-Reviewer1で承認する

まずはIAMユーザCodeCommit-Reviewer1でマネジメントコンソールにログインして、プルリクエストの詳細画面に移動します。

プルリクエストを閉じるの隣に承認のボタンがありますね。ではこの承認ボタンをクリックしましょう。

承認が成功しました。承認の数も1になり、先ほど何も表示されていなかったプルリクエストを閉じるの隣に承認を取り消しが表示されています。

CodeCommit-Reviewer2で承認する

次にIAMユーザCodeCommit-Reviewer2でマネジメントコンソールにログインして、プルリクエストの詳細画面に移動します。

こちらのIAMユーザでも承認ボタンが表示されていますのでクリックして承認しましょう。

承認が成功しました。承認の数が2になり、今度はプルリクエストを閉じるの隣に承認を取り消しと一緒にマージが表示されています。 今回の承認ルールで指定していた必要な承認の数:2の条件を満たしたため、マージが可能になっています。

それでは、こちらのプルリクエストをマージしてみましょう。マージボタンをクリックすると最終確認の画面が表示されますので、内容を確認しプルリクエストのマージをクリックしましょう。

マージ後にソースブランチ <ブランチ名> を削除しますか?にチェックを入れておけば、マージと共に編集に利用したブランチが削除されます。

マージが成功したと表示されました。

最後にコードを確認してみます。

ちゃんとupdate-approvalブランチでの変更が反映されています!またブランチのリストからもupdate-approvalブランチが消えていること確認できました。

おわりに

これまではIAMポリシーを利用して特定のブランチにマージを制限することはできましたが、今回のアップデートによりIAMポリシーを作成・編集をしないでマージをするのに承認フェーズを設けることができました。 また、ルールをリポジトリへ紐づけることで承認を必須とさせることが可能となり、今まで以上に品質をあげることが可能となると思います。 この記事がどなたかのお役に立てば幸いです。