如何在此 buildspec.yml 文件中使用环境变量?

How can I use env variables in this buildspec.yml file?

我一直在构建这个 buildspec.yml 文件来配置我的 CodeBuild 集成,虽然我可以在脚本的其他任何地方注入变量,但当我尝试在 printf 部分如下所示。我不知道如何设置它,我很好奇是否有人可以指出正确的方向。

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...
      - docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG .
      - docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
  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_REPO_NAME:$IMAGE_TAG
      - echo Writing image definitions file...
      - printf '[{"name":"<HOW_TO_PLACE_VAR_HERE>","imageUri":"<HOW_TO_PLACE_VAR_HERE>"}]' $IMAGE_REPO_NAME:$IMAGE_TAG > imagedefinitions.json

       ^ how would I inject variables here? the $PATTERN doesn't work.
artifacts:
  files:
    - '**/*'
    - 'imagedefinitions.json'
  name: s3-to-s3-latest-build.zip
  discard-paths: no

printf '[{"name":"<HOW_TO_PLACE_VAR_HERE>","imageUri":"<HOW_TO_PLACE_VAR_HERE>"}]' $IMAGE_REPO_NAME:$IMAGE_TAG > imagedefinitions.json

首先,您将输出发送到一个文件,所以您可能没有检查实际内容。

其次,您可以像在其他地方使用的那样使用 echo 语句

echo '[{"name":"'$IMAGE_REPO_NAME'"}]'

您仍然可以通过将标准输出重定向到所需文件来将内容发送到文件

echo '[{"name":"'$IMAGE_REPO_NAME'"}]' > imagedefinitions.json