热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在GitlabCI期间,Sed无法替换引号中的字符串

如何解决《在GitlabCI期间,Sed无法替换引号中的字符串》经验,如何解决这个问题?

我正在尝试在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...

我尝试了一些不起作用的东西:

sedeb deploy命令作为单独的脚本运行(CI文件中的两个不同的行)

切换我想在Dockerrun.aws.json中替换的变量

虽然它是在运行sed -i='' "s||$CONTAINER_RELEASE_IMAGE|" Dockerrun.aws.json而不是运行.bak然后运行它(我在某处看到,在OSX上使用-i =''版本的sed存在不一致)

有没有人对问题可能是什么以及如何解决有任何想法?


推荐阅读
author-avatar
复复古虎_784
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有