如何通过环境变量替换 circle.yml deploy 命令中的令牌

How to replace token in circle.yml deploy command by environment variable

我在 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- + $CIRCLE_BRANCH 替换 clever-registry。 $CIRCLE_BRANCH 的替换适用于前两个命令,但是无法替换 Dockerrun.aws.json 文件中的任何内容:(.

我也试过 ${CIRCLE_BRANCH} 语法,但效果是一样的

可能有另一种方法来替换文件中的标记?或者可能有其他方法可以替代 circle.yml?

中的命令

简单引号防止环境变量扩展。只需用双引号保护您的表达式(如果需要保护):

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