今回は、私が実際に使用したTerraformでのGitHubのリポジトリのマージをトリガーに起動するCodePipelineについて記載させていただければと思います
環境
- GitHub
- CodeBuild
- CodePipeline
手順
1.IAMロール作成
今回は自分が実際に使用したものを例としてしますが、以下のポリシーをCodePipelineに付与しました
- codestar-connections
- S3
- CodeBuild
- Lambda(source codeのdeploy先)
2.CodePipelineの作成
・パイプラインの基本的な流れ
- ソースステージ : ソースコード(CodeCommit,GitHubなど)をアーティファクトとしてS3バケットに保存
- ビルドステージ : 保存されたソースアーティファクトを用いてビルドプロジェクトを実行、ビルド完了したものをビルドアーティファクトとしてS3バケットに保存
- デプロイステージ : 保存されたビルドアーティファクトを用いてLambdaやEC2にdeployを行う
・tfファイル作成
codepipeline.tf
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | resource "aws_codepipeline" "codepipeline001" { name = "test-codepipeline" role_arn = {1.で作成したIAMロールのarn} artifact_store { location = test-codebuild-input type = "S3" } ## ソース起動 stage { name = "Source" action { name = "Source" category = "Source" owner = "AWS" provider = "CodeStarSourceConnection" version = "1" output_artifacts = ["source_output"] configuration = { ConnectionArn = codestarconnections_connection.github_connection_settings.arn FullRepositoryId = {githubのリポジトリ名} BranchName = {githubのブランチ名} } } } ## ビルドテスト stage { name = "Test" action { name = "Test" category = "Test" owner = "AWS" provider = "CodeBuild" version = "1" input_artifacts = ["source_output"] configuration = { ProjectName = test_codebuild_project.name } } } ## ビルド実行 stage { name = "Build" action { name = "Build" category = "Build" owner = "AWS" provider = "CodeBuild" version = "1" input_artifacts = ["source_output"] configuration = { ProjectName = test_codebuild_project.name } } } } |
・stage : ソースステージ、ビルドステージ、デプロイステージのこと
・name : ソースの場合Source
, ビルドの場合Build
, デプロイの場合Deploy
を指定
・action:Terraformの公式に載っていないので AWSの公式ドキュメント参照
3.Terraformの実行
こちらでまず、Terraformが正常に起動するかを確かめる
$ terraform plan
上記が正常に動作したことを確認し、実際に構築する
$ terraform apply
4.GitHubとの連携
ここからはCodePipelineとGitHubの連携をコンソールにて行う
・CodePipelineにてGitHubとの接続設定
接続設定画面に移動し、『接続を作成』を選択
プロバイダーでGitHubを選択し、接続名を記載してGitHubに接続する
・GitHubにて接続対象のリポジトリを選択
その後に『新しいアプリをインストールする』を選択し、
GitHubのリポジトリ選択画面に移動するので
対象のリポジトリを選択し、『Update access』を選択
こちらが正常に接続されたのが確認できれば、完了となります。
最後に
今回私も初めて設定してみたのですが、自動で各リソースにソースコードが反映されていった時は爽快でした。
未熟な内容となっておりますが、参考になれば幸いです。