bash - 变量神秘消失?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 命令时获得了一些不同的执行环境?
解决方案
检查 BuildSpec 文件的版本。将其更改为版本:0.2。
在版本 0.1 中,AWS CodeBuild 在构建环境中默认 shell 的单独实例中运行每个构建命令。在版本 0.2 中,AWS CodeBuild 在构建环境中默认 shell 的同一实例中运行所有构建命令。
推荐阅读
- jsr352 - 在运行期间停止 JSR 批处理应用程序而不抛出异常
- javascript - 使用 java 和 video.js 实现无限视频流
- nginx - Nginx try_files 删除 client_max_body_size 选项
- mysql - 将图像更新到 MySQL 数据库时,无法将“System.Byte []”类型的对象转换为“System.IConvertible”类型
- html - HTML & CSS - 你如何显示
- 和
在同一条线上(彼此相邻)? - reactjs - 当我运行 React Native Expo 应用程序时,键盘覆盖 TextInput 表单
- r - 如何使用 Shiny 将 RStudio 连接到 Microsoft 365
- python-3.x - scipy LinearNDInterpolator 返回的不寻常的 nan
- arrays - Error using map to create Routes dinamically
- python - "This field cannot be blank" even if the field is not empty?