我在circle.yml中有部署部分,如下所示:
deployment:
default:
branch: [prototype, staging, production]
commands:
- docker tag clever chaliy/clever-$CIRCLE_BRANCH:latest
- docker push chaliy/clever-$CIRCLE_BRANCH:latest
- sed -i 's/clever-registry/clever-$CIRCLE_BRANCH/g' Dockerrun.aws.json
- cat Dockerrun.aws.json
- eb deploy clever-$CIRCLE_BRANCH --profile default --staged
我有Dockerrun.aws.json
我希望将clever-registry
替换为值clever-
+ $CIRCLE_BRANCH
。 $ CIRCLE_BRANCH的替换在前两个命令中有效,但无法替换Dockerrun.aws.json文件中的任何内容:(。
我也试过$ {CIRCLE_BRANCH}语法,但效果是一样的。
可能有另一种方法来替换文件中的令牌吗?或者可以通过其他方式在circle.yml中替换该命令?
答案 0 :(得分:1)
简单引号可以防止环境变量扩展。用双引号保护你的表达(如果它需要保护):
sed -i "s/clever-registry/clever-$CIRCLE_BRANCH/g" Dockerrun.aws.json
这将有效。在您的情况下,看到其他命令不受保护,您也可能根本无法保护您的表达。只要$CIRCLE_BRANCH
不是太奇特,并且不包含可行的空格。
sed -i s/clever-registry/clever-$CIRCLE_BRANCH/g Dockerrun.aws.json