变量神秘地消失了吗? AWS CodeBuild

时间:2018-12-12 22:16:55

标签: bash amazon-web-services 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,但是在我的构建脚本的下一行执行中,它似乎已经消失了。 / p>

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

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

1 个答案:

答案 0 :(得分:1)

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

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