Назад | Перейти на главную страницу

Как установить динамический путь для выходного артефакта из aws_codebuild_project в Terraform?

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