You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Terraform获取CodeBuild最新成功构建编号并用于镜像标签?

解决CodeBuild构建编号作为Docker镜像标签的Terraform配置问题

错误原因

你在Terraform配置里把CODEBUILD_BUILD_NUMBER当成了Terraform变量引用,但这个值是CodeBuild运行时自动注入的环境变量,不属于Terraform的变量体系,因此Terraform会提示未声明该变量。

解决方案

步骤1:修正Terraform配置

删除Terraform中environment块里的IMAGE_TAG环境变量定义——这个值不需要在Terraform层面配置,而是在构建过程中由CodeBuild提供。修改后的相关配置片段如下:

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

  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
  }
}

步骤2:在buildspec.yml中使用构建编号作为镜像标签

在你的buildspec.yml构建脚本里,直接引用CodeBuild自动注入的CODEBUILD_BUILD_NUMBER环境变量作为Docker镜像标签。示例buildspec内容如下:

version: 0.2

phases:
  pre_build:
    commands:
      - echo Logging in to Amazon ECR...
      - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com
  build:
    commands:
      - echo Build started on `date`
      - echo Building the Docker image...
      # 直接使用CODEBUILD_BUILD_NUMBER作为镜像标签
      - docker build -t $IMAGE_NAME:$CODEBUILD_BUILD_NUMBER .
      - docker tag $IMAGE_NAME:$CODEBUILD_BUILD_NUMBER $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_NAME:$CODEBUILD_BUILD_NUMBER
  post_build:
    commands:
      - echo Build completed on `date`
      - echo Pushing the Docker image...
      - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_NAME:$CODEBUILD_BUILD_NUMBER

配置完成后,每次CodeBuild运行时,会自动将当前构建的编号注入到CODEBUILD_BUILD_NUMBER变量中,构建脚本就能用它生成带对应编号的Docker镜像标签。

内容的提问来源于stack exchange,提问作者user21700129

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 19:47:08