[アップデート]CodeCommitでプルリクエストの承認ルールワークフローを試してみた
はじめに
こんにちは、AWS事業本部のニシヤマです。はいマスキュラー。
先日、CodeCommitでプルリクエストの承認ルールワークフローが利用できる様になったので試してみました。
どうなった
以前からCodeCommitでプルリクエストはできていましたが、今回のアップデートによりプルリクエスト専用の承認ルールを作成することで、一定数以上または特定ユーザーの承認を得た場合にのみコードをマージさせる様に強制することができる様になりました。
前提
今回は以下の前提で進めます。
- CodeCommitリポジトリ(TestRepository)が作成されていること
- プルリクエスト作成用IAMユーザ(CodeCommit-User1)が作成されていること
- プルリクエスト承認用IAMユーザ(CodeCommit-Reviewer1、CodeCommit-Reviewer2)が作成されていること
- 上記IAMユーザに適切な権限が付与されていること
やってみる
承認ルールテンプレートの作成
それでは承認ルールテンプレートを作成していきます。
マネジメントコンソールでCodeCommitの画面にアクセスすると左のメニューに承認ルールテンプレート
が追加されていました。
テンプレートを作成
をクリックして以下を入力して、作成をクリックします。今回はmasterブランチへのマージの際に承認を必要とさせたいため、ブランチフィルターにmaster
を入力します。
- 承認ルールテンプレート名:Require 2 Apploval
- 説明:任意
- 必要な承認の数:2
- ブランチフィルター(オプション):master
- 関連付けられたリポジトリ:TestRepository
今回は利用しませんが、オプションで承認プールのメンバー
からIAMユーザなどを指定することにより特定のメンバーに承認を依頼することも可能です。
これで承認ルールテンプレートの作成と、リポジトリへの関連付けが完了しました。
これで準備完了です。
プルリクエストを作成する
それではプルリクエストを作成してマージしていきましょう。
上記を参考にプルリクエストの作成をしていきます。この作業はプルリクエスト作成用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ポリシーを作成・編集をしないでマージをするのに承認フェーズを設けることができました。 また、ルールをリポジトリへ紐づけることで承認を必須とさせることが可能となり、今まで以上に品質をあげることが可能となると思います。 この記事がどなたかのお役に立てば幸いです。