如何通过 Terraform 从 Code Build 中获取最后一个成功的内部版本号?

问题描述 投票:0回答:0

我正在尝试创建一个 Docker 映像,其中标签将成为最后一个成功的内部版本号,但我似乎找不到这样做的方法。

这是我的脚本

resource "aws_codebuild_project" "tf_codebuild_project" {
  name          = var.aws_project_name
  description   = var.aws_project_name
  build_timeout = "60"

  service_role  = var.aws_codebuild_role_arn

  source {
    type            = "CODECOMMIT"
    location        = var.aws_codecommit_repo_url
    buildspec       = "buildspec.yml"
    git_clone_depth = 1
  }

  artifacts {
    type = "NO_ARTIFACTS" 
  }

  environment {
    compute_type                = "BUILD_GENERAL1_SMALL"
    image                       = "aws/codebuild/standard:4.0"
    type                        = "LINUX_CONTAINER"
    image_pull_credentials_type = "CODEBUILD"

    # https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html
    environment_variable {
      name  = "AWS_DEFAULT_REGION"
      value = var.aws_default_region
    }

    environment_variable {
      name  = "AWS_ACCOUNT_ID"
      value = var.aws_account_id
    }

    environment_variable {
      name  = "IMAGE_NAME"
      value = var.aws_codecommit_repo_name
    }

    environment_variable {
      name  = "IMAGE_TAG"
      value = "${CODEBUILD_BUILD_NUMBER}"
    }
  }

  tags = var.aws_codebuild_tags
}

这就是我得到的

> 
> Error: Reference to undeclared input variable
> │
> on modules\codebuild\main.tf line 50, in resource "aws_codebuild_project" "tf_codebuild_project":
> 50:       value = "${CODEBUILD_BUILD_NUMBER}"
> │
> An input variable with the name "CODEBUILD_BUILD_NUMBER" has not been declared. This variable can be declared with a variable "CODEBUILD_BUILD_NUMBER" {} block.

所以问题在于:

environment_variable {
  name  = "IMAGE_TAG"
  value = "${CODEBUILD_BUILD_NUMBER}"
}
terraform terraform-provider-aws aws-codebuild
© www.soinside.com 2019 - 2024. All rights reserved.