Я пытаюсь настроить проект AWS CodeBuild в Terraform:
resource "aws_codebuild_project" "example" {
name = "test-project"
description = "test_codebuild_project"
build_timeout = "5"
service_role = "${aws_iam_role.example.arn}"
artifacts {
type = "S3"
location = "${aws_s3_bucket.example.bucket}"
name = "example.zip"
packaging = "ZIP"
path = "dev/api/${var.app_version}"
}
Этот пример работает нормально, но он сохранит только артефакт сборки. example.zip
в папку, установленную при terraform apply
был запущен, так как ${var.app_version}
не меняется при последующих запусках этой сборки.
Как мне добиться чего-то, что, например, берет номер версии из package.json
файл в репо и использует его для ${var.app_version}
?
Это не должно происходить со стороны терраформ. В документах AWS CodeBuild упоминается, как добиться чего-то подобного с помощью buildspec, хотя вы можете быть ограничены, используя только переменные env, предоставленные CodeBuild, для добавления варианта к имени.
version: 0.2
phases:
build:
commands:
- rspec HelloWorld_spec.rb
artifacts:
files:
- '**/*'
name: myname-$CODEBUILD_SOURCE_VERSION
Вы можете найти расширенное объяснение здесь: https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html