CodeCommitでプルリクエストの承認ルールを作成

1. はじめに

今回は、CodeCommitでプルリクエストの承認ルールを作成し、プルリクエスト⇒承認⇒マージの流れを確認してみます。



2. 目次



3. 各種AWSリソースのセットアップ


3.1. IAMユーザー


3.1.1. CodeCommitのAWS管理ポリシー

CodeCommitのAWS管理ポリシーは以下の3つがあります。

ポリシー 説明
AWSCodeCommitFullAccess CodeCommitへのフルアクセスが付与される。
AWSCodeCommitPowerUser CodeCommitおよびリポジトリ関連リソースのすべての機能にアクセスできるが、CodeCommitリポジトリを削除することはできない。
AWSCodeCommitReadOnly リポジトリのコンテンツを読み込む機能 (コンテンツを変更させない) を付与したいユーザーに付与する。


3.1.2. IAMユーザーの作成
ユーザー名 アタッチする許可ポリシー 備考
CodeCommit-User AWSCodeCommitPowerUser プルリクエスト作成用ユーザー
CodeCommit-Reviewer AWSCodeCommitPowerUser プルリクエスト承認用ユーザー

※簡略化のためにAWSCodeCommitPowerUserを使用しています。必要な許可のみを提供したい場合は IAM カスタマーマネージドポリシーを作成してください。


3.2. CodeCommit


3.2.1. CodeCommitとは

CodeCommitは、AWSが提供するフルマネージド型のソース管理サービスです。 リポジトリを作成して、文書やソースコードなどのデータをAWSに保存できます。

3.2.2. 承認ルールテンプレートとは

承認ルールテンプレートではプルリクエストの承認ルールを作成でき、異なるブランチに対し適切なレベルの承認ルールを設定できます。
例えば、本番稼働用ブランチと開発ブランチに異なるルールを定義できます。
各設定項目の説明を以下に示します。

  • 承認ルールテンプレート名
    ⇒承認ルールテンプレートの名前を設定する。
  • 説明
    ⇒テンプレートの目的の説明を設定する。
  • 必要な承認の数
    ⇒何人の承認が必要か。2人なら2を設定する。
  • 承認プールのメンバー
    ⇒特定のメンバーから承認をしてもらいたい場合に設定する。ここで設定されたメンバーからの承認のみが承認ルールを満たす条件としてカウントされる。
  • ブランチフィルター
    ⇒特定のブランチにのみ承認ルールを適用したい場合に、適用したいブランチを設定する。設定しない場合、関連付けられたリポジトリのすべてのブランチに適用される。
  • リポジトリ
    ⇒承認ルールに関連付けるリポジトリを設定する。



3.2.3. CodeCommitリポジトリの作成

リポジトリの作成画面

項目 設定値
リポジトリ 任意のリポジトリ
説明 任意の説明
その他項目 デフォルトのまま


3.2.4. CodeCommitリポジトリにファイルを追加

ファイルの追加方法は以下の2通りあります。

  • コンソールから直接追加する。
  • ローカルコンピュータにリポジトリのクローンを作成して、コミットを作成し、AWS CodeCommit のリモートリポジトリにコンテンツをプッシュする。


今回はコンソールから直接追加します。
【手順】

  1. CodeCommit コンソールを開く。
  2. [リポジトリ] で、ファイルを追加するレポジトリを選択する。
  3. [コード] ビューで[ファイルの追加] を選択し、[ファイルのアップロード] を選択する。
  4. ローカルコンピュータからファイルを選択し、以下項目を設定後、[変更のコミット] を選択する。

ファイルのアップロード

項目 設定値
作成者名 名前を入力
E メールアドレス E メールアドレスを入力
メッセージのコミット 短い説明を入力(入力しない場合は、デフォルトのコミットメッセージが使用される。)

新規作成したリポジトリでマネジメントコンソールより空のブランチに新規ファイルを追加すると、 mainブランチが作成されます。
なお、今回は以下の内容のファイルをアップロードしました。

index.html(修正前)

<!DOCTYPE html>

<html lang="ja">
<head>
  <meta charset="utf-8">
  <title>CodeCommit Sample</title>
</head>
<body>
  Hello World!!
</body>
</html>


3.2.5. CodeCommitリポジトリでブランチを作成

ブランチの作成方法は以下の3通りあります。

  • コンソールを使用して作成する。
  • ローカルリポジトリから Git を使用してローカルリポジトリにブランチを作成して、そのブランチを CodeCommit リポジトリにプッシュする。
  • AWS CLI コマンドを使用して作成する。


今回はコンソールを使用して作成します。
【手順】

  1. CodeCommit コンソールを開く。
  2. リポジトリで、ブランチを作成するリポジトリの名前を選択する。
  3. ナビゲーションペインで、[ブランチ] を選択する。
  4. [ブランチの作成] を選択します。
  5. 以下項目を設定し、[ブランチの作成] を選択する。

ブランチの作成

項目 設定値
ブランチ名 任意のブランチ名
ブランチ元 リストからブランチまたはタグを選択するか、コミット ID を貼り付け

上記手順にて、以下のブランチを作成します。

ブランチ名 ブランチ元 備考
main - 新規ファイル追加時に作成される。
develop main
feature/view_change develop


3.2.6. 承認ルールテンプレートを作成

承認ルールテンプレートの作成方法は以下の3通りあります。

  • コンソールを使用して作成する。
  • AWS CLIを使用して作成する。


今回はコンソールを使用して作成します。
【手順】

  1. CodeCommit コンソールを開く。
  2. [承認ルールテンプレート] を選択し、[テンプレートを作成] を選択する。
  3. 以下項目を設定し、[作成] を選択する。

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

項目 設定値
承認ルールテンプレート名 任意の承認ルールテンプレート名
説明 任意の説明
必要な承認の数 任意の承認の数(今回は1を設定)
承認プールのメンバー CodeCommit-Reviewerの完全修飾ARNを指定
ブランチフィルター プルリクエストの送信先ブランチであるdevelopを指定
リポジトリ 3.2.2で作成したリポジトリを選択



4. プルリクエストの作成


4.1. ファイル修正~コミット(CodeCommit-Userにて実施)

  1. CodeCommit コンソールを開く。
  2. リポジトリで、プルリクエストを作成するリポジトリの名前を選択する。
  3. [コード] ビューで、ファイルを変更するブランチ(feature/view_change)を選択する。
  4. 変更するファイル(index.html)を選択する。
  5. [編集] を選択する。
  6. 以下のように修正後、作成者名・E メールアドレス・メッセージのコミットを入力し、[変更のコミット] を選択する。

index.html(修正後)

<!DOCTYPE html>

<html lang="ja">
<head>
  <meta charset="utf-8">
  <title>CodeCommit Sample</title>
</head>
<body>
  Hello CodeCommit World!!
</body>
</html>

Hello World!!」を「Hello CodeCommit World!!」に修正しています。


4.2. プルリクエスト(CodeCommit-Userにて実施)

  1. [プルリクエストの作成] を選択する。
  2. 以下項目を設定し、[プルリクエストの作成] を選択する。
項目 設定値
ターゲット develop
ソース feature/view_change
タイトル 任意の任意のタイトル
説明 任意の説明


4.3. 承認(CodeCommit-Reviewerにて実施)

  1. CodeCommit コンソールを開く。
  2. リポジトリで、プルリクエストが作成されたリポジトリの名前を選択する。
  3. [プルリクエスト] ビューで、対象のプルリクエストを選択する。
  4. [承認] を選択する。

CodeCommitの承認画面


4.4. マージ(CodeCommit-Reviewerにて実施)

  1. [マージ] を選択する。

CodeCommitのマージ画面

  1. 以下項目を設定し、[プルリクエストのマージ] を選択する。
項目 設定値
マージ戦略 任意のマージ方法を選択
マージ後にソースブランチを削除するかどうかのチェックボックス 任意(今回は削除する)

マージの詳細



5. コード確認

対象のリポジトリのdevelopブランチを確認したところ、修正内容が反映されていることが確認できます。

コード確認



6. まとめ

今回はCodeCommitでプルリクエストの承認ルールを作成してみました。適用するリポジトリ、ブランチを指定することができるため、ブランチ毎に柔軟に承認ルールを作成することができ、便利だと感じました。承認ルールを適切に設定することでリポジトリ内のファイルを安全に管理することができるようになるため、ぜひご活用してみてはいかがでしょうか。