CodePipeline with GitHub by Terraform
初めに
本ページでは、CodePipelineとGitHubを連携させCICDパイプラインを構築する方法について記述する。本CICDパイプラインで作成されるAWSリソースはTerraformを用いて構成管理される。
パイプラインの概要
パイプラインの概要図を以下に示す。「Sourceステージ」であるGitHubにterraformファイルがPushされると、「Planステージ」でterraform planが実行され、Reviewerによる「Approvalステージ」に移行する。Reviewの結果、承認されれば「Applyステージ」のterraform applyが実行され、承認されなければ破棄される。
作成手順
- aws-terraform-cicdを自分のローカル環境にgit cloneする。
- 以下のコマンドでリポジトリ配下に移動する。
cd aws-terraform-cicd
- 以下のコマンドを実行する。
terraform init
- ルート直下のmain.tfのcodepipelineモジュールに以下のパラメータを入力。
module "codepipeline" {
source = "./modules/codepipeline"
prefix = "tf-codepipeline"
full_repository_id = "proyogram/aws-terraform-backup"
branch_name = "develop"
}
source: そのまま。
prefix: 作成するリソース名すべてに本prefixが付与される。
full_repository_id: CICD Pipelineを適用させたいレポジトリを設定。UserName/RepositoryName
の形式で記載する。
3. terraform planで作成されるリソースを確認する。
4. terraform applyでリソースを作成する。
ここからAWS コンソール上での作業が必要になる。
5. AWSにログインし、codepipelineのコンソールを開く。
6. すると、以下のように「失敗しました。」が表示されているのがわかる。
7. 失敗した原因をみると、どうやらGitHubとのconnectionが確立されていないようだ。(想定内)
8. じゃ、GitHubと連携してみよう。左の「設定」から「接続」を選択する。
9. プロバイダー(GitHub)との接続ステータスが「保留中」となっているのがわかる。
10. 選択すると、以下のように「保留中の接続を更新」というボタンが表示されるのでクリック。
11. すると、以下のようなポップアップ画面がでる(10秒くらい待つ)。GitHubアプリを選択して「接続」をクリック。
12. これで、GitHubとの連携は完了である。
13. CodePipelineに戻るとまだ失敗のままになっているので、「失敗をしたアクションを再試行」をクリックする。
14. すると、いかのように今度は成功しているのがわかる。
15. 最終的にパイプライン全体が成功したのがわかる。
16. 以上
Discussion