作者:复复古虎_784 | 来源:互联网 | 2022-12-17 10:00
我正在尝试在Dockerrun.aws.json文件中动态设置AWS Elastic Beanstalk的映像名称和标记:
"Image": {
"Name": "IMAGETAG",
"Update": "true"
}
使用以下sed命令作为我的GitLab CI文件中的脚本:
sed -i.bak "s|IMAGETAG|$CONTAINER_TEST_IMAGE|" Dockerrun.aws.json && rm Dockerrun.aws.json.bak; eb deploy Production
哪里$CONTAINER_TEST_IMAGE
是经过验证的良好环境变量(通过echo $CONTAINER_TEST_IMAGE
作为脚本进行测试).$CONTAINER_TEST_IMAGE
包含以下内容的结构(其中...是完整ID):
gitlab.company.com:123/my-group/my-project:core_7de09851...8f_testing
我面临的问题是sed在CI管道中不起作用.我无法理解为什么考虑如果我在本地设置环境变量并运行相同的命令,它将成功地将值替换Name
为相同的结构URL.该测试在Macbook上完成.
我知道它没有更新文件,因为Gitlab CI日志报告
WARN: Failed to pull Docker image IMAGETAG:latest, retrying...
我尝试了一些不起作用的东西:
将sed
和eb deploy
命令作为单独的脚本运行(CI文件中的两个不同的行)
切换我想在Dockerrun.aws.json中替换的变量
虽然它是在
运行sed -i='' "s||$CONTAINER_RELEASE_IMAGE|" Dockerrun.aws.json
而不是运行.bak然后运行它(我在某处看到,在OSX上使用-i =''版本的sed存在不一致)
有没有人对问题可能是什么以及如何解决有任何想法?