如何在 Terraform 中为 aws_codebuild_project 的输出工件设置动态路径?

如何在 Terraform 中为 aws_codebuild_project 的输出工件设置动态路径?

我正在尝试在 Terraform 中设置一个 AWS CodeBuild 项目:

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.jsonrepo 中的文件获取版本号并将其用于${var.app_version}

答案1

这不应该从 terraform 端完成。AWS CodeBuild 文档提到了如何使用 buildspec 实现类似功能,尽管您可能受到仅使用 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

相关内容