Я пытаюсь настроить проект 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