🎉

CodePipeline with GitHub by Terraform

2023/12/05に公開

初めに

本ページでは、CodePipelineとGitHubを連携させCICDパイプラインを構築する方法について記述する。本CICDパイプラインで作成されるAWSリソースはTerraformを用いて構成管理される。

パイプラインの概要

パイプラインの概要図を以下に示す。「Sourceステージ」であるGitHubにterraformファイルがPushされると、「Planステージ」でterraform planが実行され、Reviewerによる「Approvalステージ」に移行する。Reviewの結果、承認されれば「Applyステージ」のterraform applyが実行され、承認されなければ破棄される。

作成手順

  1. aws-terraform-cicdを自分のローカル環境にgit cloneする。
  2. 以下のコマンドでリポジトリ配下に移動する。
cd aws-terraform-cicd
  1. 以下のコマンドを実行する。
terraform init
  1. ルート直下のmain.tfのcodepipelineモジュールに以下のパラメータを入力。
main.tf
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