2016-10-14 43 views
0

我在circle.yml部署部分,看起來像這樣:如何通過替換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-registryclever- + $CIRCLE_BRANCH 。替代$的前兩個命令CIRCLE_BRANCH工作,但未能在Dockerrun.aws.json文件:(更換任何東西。

我也試過$ {} CIRCLE_BRANCH語法,但效果是一樣的。

可能還有另一種方法可以替換文件中的令牌嗎?或者可以在其他方式中,我可以用circle.yml中的該命令替換其他方式嗎?

回答

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