CodePipelineによるデプロイは、基本的には手動で行っています
ただ開発中は検証環境へのデプロイについては頻度も多く、影響も少ないため、自動デプロイで運用しております
CodeCommitやGitHubで特定ブランチの修正マージをEventBridgeで検知し、CodePipelineで自動デプロイされるようにしております
業務のイメージとしては開発者からベースブランチへのプルリクを受け、レビュー&マージを行うことで、CodePipelineが自動実行されます
デプロイ完了後に、動作確認のため検証チームや開発者に周知を行います
CodePipelineの起動作業が自動化されているので楽ではあるのですが、デプロイがいつ完了したのかわからないため、結局AWS Consoleを開いてCodePipelineの進捗状況を確認していたりします
この部分の改善としてCodePipelineの完了通知を行うようにしてみました
設定概要
設定概要は以下の通りです
- SMSで通知トピックを準備する
- EventBridgeでCodePipelineの完了を検知する
- 動作確認を行う
1. SMSの設定
SNSのトピックで通知先を設定します
- Amazon SNS→トピックを開く
- トピックの作成を押下
- トピックの作成を定義
- タイプ:スタンダードを選択
- トピックの作成を押下
- 作成したトピックのサブスクリプションタブを選択し、サブスクリプションの作成を押下
- サブスクリプションを定義
- プロトコル:Eメールを選択
- エンドポイント:通知を受信するメールアドレスを入力
- リクエストの確認
- サブスクリプションを作成すると、確認用のメールが届くのでConfirm subscriptionをクリック
- Amazon SNS→サブスクリプションを開く
- 作成したサブスクリプションのステータスが確認済みになっていることを確認
2. EventBridgeの設定
EventBridgeのルールで、CodePipelineの完了を検知するルールを追加します
- Amazon EventBridge→ルールを開く
- ルールを作成を押下
- ルールの詳細を定義
- ルールタイプ:イベントパターンを持つルールを選択
- イベントパターンを構築
- イベント:その他を選択
- イベントパターン:カスタムパターン (JSON エディタ)を選択
- JSONによる記述
-
{ "source": ["aws.codepipeline"], "detail-type": ["CodePipeline Pipeline Execution State Change"], "detail": { "state": ["SUCCEEDED", "FAILED", "CANCELED"], "pipeline": ["myproject-development"] } }
-
- ターゲットを選択
- ターゲットタイプ:AWSのサービスを選択
- ターゲットを選択:SNSトピックを選択
- ターゲットの場所:このアカウントのターゲットを選択、SNSで作成したトピックを選択
- 確認と更新
- ルールの作成を押下
3. 動作確認
設定したCodePipelineのプロジェクトが自動起動するようベースブランチを修正し、CodePipelineが完了後に通知が届くかを確認します