如何在此 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
我一直在构建这个 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