2017-08-03 4 views
0

私が達成しようとしているのは、ユーザーが環境を選択し、その環境(URL、DBなど)に適切な環境変数を設定できることです。 可能ですか? 私は多くのことを試しました。環境内の補間を使って、異なる場所ではなく運がない環境マップを定義しようとしました。 私の環境マップ変数は環境セクションではアクセスできませんし、環境セクション内で何ができるのかにいくつかの制限があるようです。 +、env varは値または関数呼び出しのみで連結できます。 私はこれらのヒントでいくつかのバリエーションを試しましたが、まだ運がありません。Jenkinsパイプラインの選択肢を使用してネストマップから環境変数を定義する

def environments = [ 
    TEST: [APP_URL: 'http://test'], 
    DEV: [ APP_URL: 'https://dev'], 
    QA: [ APP_URL: 'https://qa'] 
] 

pipeline { 
    agent any 
    parameters { 
    choice(name: 'environment', choices: "${environments.keySet().join('\n')}") 
    } 
    stages { 
    stage ('Test') { 
     environment { 
     APP_URL = environments[params.environment]['APP_URL'] 
     } 
     steps { 
     sh 'env' 
     } 
    } 
    } 
} 

答えて

0

これは動作します:)

def environments = [ 
    TEST: [APP_URL: 'http://test'], 
    DEV: [ APP_URL: 'https://dev'], 
    QA: [ APP_URL: 'https://qa'] 
] 

pipeline { 
    agent any 
    parameters { 
    choice(name: 'environment', choices: "${environments.keySet().join('\n')}") 
    } 
    stages { 
    stage ('Test') { 
     steps { 
     sh """ 
      export APP_URL=${environments[params.environment]['APP_URL']} 
      env 
     """ 
     } 
    } 
    } 
} 
関連する問題