首页 > 解决方案 > 变量神秘消失?AWS CodeBuild

问题描述

接下来是我的 buildspec.yml

build:
        commands:
            - 'IMAGE_TAG=$(cat package.json | grep version | head -1 | awk -F: ''{ print $2 }'' | sed ''s/[",]//g'')'
            - echo $IMAGE_TAG
            - 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

这是相关构建的输出:

 [Container] 2018/12/12 22:06:42 Running command IMAGE_TAG=$(cat package.json | grep version | head -1 | awk -F: '{ print $2 }' | sed 's/[",]//g')
 [Container] 2018/12/12 22:06:42 Running command echo $IMAGE_TAG <<< GOOD
1.0.0                           <<<< PERFECT
 [Container] 2018/12/12 22:06:42 Running command docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG .
invalid argument "gotbot-air:" for t: invalid reference format
See 'docker build --help'.     <<<<<< OH NO
 [Container] 2018/12/12 22:06:42 Command did not exit successfully docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG . exit status 125

正如您在标记的行中清楚地看到的那样,变量 $IMAGE_TAG 在回显时以某种方式正确设置为 1.0.0,但在我的构建脚本的下一行执行中,它似乎已经消失了。

请注意,我使用的是规范的 0.2 版。

编辑:我的其他环境变量要么在顶部声明,要么在env本地代码构建变量中声明,这可能很重要,这可能是我在运行 docker 命令时获得了一些不同的执行环境?

标签: bashamazon-web-servicesaws-codebuild

解决方案


检查 BuildSpec 文件的版本。将其更改为版本:0.2。

在版本 0.1 中,AWS CodeBuild 在构建环境中默认 shell 的单独实例中运行每个构建命令。在版本 0.2 中,AWS CodeBuild 在构建环境中默认 shell 的同一实例中运行所有构建命令。


推荐阅读