我正在尝试在 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.json
repo 中的文件获取版本号并将其用于${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