2017-02-08 14 views
2

私が探しているのは、自分のtravis.ymlがどのブランチがビルドされているかに基づいて、適切に指定された環境変数を使用するように設定することです。私はトラヴィス$ DEV_ARTIFACTS_KEYに保存されている場合トラビス:他の環境を使って環境変数を構築できますか?

私は、の線に沿って考えている/ $ TEST_ARTIFACTS_KEYなど

その後

$ TRAVIS_BRANCHは= DEV

私は、何かをすることができますので、私は、DEVブランチにプッシュします以下のような:ARTIFACTS_KEY = $ {$のTRAVIS_BRANCH} _ARTIFACTS_KEY と、それは次のようになります。ARTIFACTS_KEY = $ DEV_ARTIFACTS_KEY

明らかに{}で上記の構文が動作しない、または私はここではないでしょう!理論的にはこの方法が可能かどうか、もしあれば、どうなるのだろうか?

編集:私は、私は上記のように3つの変数を設定したいんだ

やろうとしているかについて、さらに詳細については。

env: 
    - ARTIFACTS_KEY=$DEV_ARTIFACTS_KEY ARTIFACTS_SECRET=$DEV_ARTIFACTS_SECRET ARTIFACTS_BUCKET=$DEV_ARTIFACTS_BUCKET 

:私はそれはのような分岐変数を使用せずに作業している

ARTIFACTS_KEY、 {BRANCH} _ARTIFACTS_KEY、{BRANCH} _ARTIFACTS_SECRET、{BRANCH} _ARTIFACTS_BUCKET

からその場で作成ARTIFACTS_SECRET & ARTIFACTS_BUCKET $ DEV_ARTIFACTS_KEYなどはTravisで定義されています。しかし、私はこれまで、DEV部分をその場でブランチ名に置き換えることに失敗しました。

答えて

0

これはbashで動作し、したがって、また、トラヴィスに動作するはずです:あなたは別の変数内の変数の名前を持っているときはいつでも

# setup dummy values 
TRAVIS_BRANCH=DEV 
DEV_ARTIFACTS_KEY=dev-artifacts-key-value 
DEV_ARTIFACTS_SECRET=dev-artifacts-secret-value 
DEV_ARTIFACTS_BUCKET=dev-artifacts-bucket-value 

# actual lines you want 
eval ARTIFACTS_KEY=\$${TRAVIS_BRANCH}_ARTIFACTS_KEY 
eval ARTIFACTS_SECRET=\$${TRAVIS_BRANCH}_ARTIFACTS_SECRET 
eval ARTIFACTS_BUCKET=\$${TRAVIS_BRANCH}_ARTIFACTS_BUCKET 

# test results 
echo "key=$ARTIFACTS_KEY" 
echo "secret=$ARTIFACTS_SECRET" 
echo "bucket=$ARTIFACTS_BUCKET" 

は、あなたはそれを解釈するevalを必要としています。 bashはこのライン見ているとき:

eval ARTIFACTS_KEY=\$${TRAVIS_BRANCH}_ARTIFACTS_KEY 

をそれは最初の変数を展開する(単独でエスケープ$の葉):

eval ARTIFACTS_KEY=\$DEV_ARTIFACTS_KEY 

そして、それは順番に$DEV_ARTIFACTS_KEYが展開され、割り当てられた文字列ARTIFACTS_KEY=$DEV_ARTIFACTS_KEYevalを実行値はARTIFACTS_KEYになります。

+0

oohこれは、まだまだかなり機能していますが、より近いです。 TRAVIS_BRANCHを正しく評価していますが、結果の値を別の環境変数ではなく文字列として扱うように見えます。したがって、ARTIFACTS_KEY以外にも、私の実際のバケット名ではなく、 "バケット:$ DEV_ARTIFACTS_BUCKET"というロギングでARTIFACTS_BUCKET&を設定しようとしています。結果の値をenv varとして扱うことは可能ですか、それとも不可能にしようとしていますか? – MissGeek

+0

このコードをbashで実行すると、* $ DEV_ARTIFACTS_BUCKETの値を 'ARTIFACTS_KEY'に割り当てる必要があります。私はトラビスでそれをテストしなかった。しかし、以前は言及していない何か他のことをしているようです( 'ARTIFACTS_BUCKET')、質問を更新してください。 – flyx

+0

私が設定しようとしているすべての変数を含めるように質問が更新されました。 – MissGeek