CodePipeline で CodeBuild へ環境変数を渡し、上書きすることで CodeBuild を再利用する
CodeBuild を再利用し、不要に作成しない様にした話です。
terraform で buildspec を管理してみる
buildspec.yml
1
2
3
4
5
6
7
version: 0.2
env:
variables:
FOO: "${foo}"
...codebuild.tf
1
2
3
4
5
6
7
8
9
10
11
12
13data "template_file" "buildspec" {
template = file("buildspec.yml")
vars = {
foo = "foo"
}
}
resource "aws_codebuild_project" "foo" {
source {
type = "CODEPIPELINE"
buildspec = data.template_file.buildspec.rendered
}
terraform apply
実行し CodeBuild を作成すると、環境変数 FOO=foo
が設定されます。
CodePipeline で CodeBuild の環境変数を上書き
CodeBuild の処理内容は同じだが、環境変数だけ変えたい場合に有効です
1 | resource "aws_codepipeline" "moge" { |
これで CodePipeline を実行した場合、 FOO=moge
が指定され、見事上書きされてます。
例題
${repository_url}
に nginx の ECR リポジトリを代入すると Nginx のイメージビルド & ECR プッシュの処理をする CodeBuild が作れます。
1 |
|
CodePipeline で環境変数 REPOSITORY_URL=123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/fluentd
と指定すると fluentd イメージをビルド & ECR push ができます。
結論
無闇に CodeBuild を作成することなかれ
以上
参考になれば幸いです。
参考
環境変数の指定の仕方は以下参考にしました。
CodePipeline で CodeBuild へ環境変数を渡し、上書きすることで CodeBuild を再利用する
https://kenzo0107.github.io/2020/03/30/2020-03-31-buildspec-env/