Bash 变量神秘消失?AWS代码构建
下面是我的buildspec.ymlBash 变量神秘消失?AWS代码构建,bash,amazon-web-services,aws-codebuild,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
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
[Container]2018/12/12 22:06:42运行命令IMAGE_TAG=$(cat package.json | grep version | head-1 | awk-F:“{print$2}”sed's/[”,]//g')
[容器]2018/12/12 22:06:42运行命令echo$IMAGE_TAG检查BuildSpec文件的版本。将其更改为版本:0.2
在版本0.1中,AWS CodeBuild在生成环境中默认shell的一个单独实例中运行每个生成命令。在版本0.2中,AWS CodeBuild在生成环境中默认shell的同一实例中运行所有生成命令。My buildspec肯定在0.2上…如果不是,则两者之间的回音不应该正常工作?如何您是否认为IMAGE_标记是这里错误的部分?您收到的“gotbot air”参数无效,我看不出这与1.0.0变量有什么关系?什么是gotbot air?“gotbot air”“是变量$IMAGE\u REPO\u NAME的值。Docker正在抱怨,因为-t gotbot air:
不是有效的参数。我希望它是-t gotbot air:1.0.0
,这是有效的。好吧,你为什么不试试:IMAGE\u TAG=$(cat-package.json | grep version | head-1 | awk-F:'{print$2}sed's/[,]/g')&docker build t-t$IMAGE\u REPO\u NAME:$IMAGE\u TAG。