如何用环境变量替换circle.yml deploy命令中的标记

时间:2016-10-14 19:27:59

标签: bash sed circleci

我在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中替换该命令?

1 个答案:

答案 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