2017-08-03 41 views
0

我想要實現的是:用戶將選擇一個環境,然後可以爲該環境(URL,DB等)設置合適的env變量。 這可能嗎? 我嘗試了很多東西:在環境中插值,嘗試在不同的地方定義環境地圖,但沒有運氣。 我的環境映射變量在環境部分中不可訪問,而且似乎對環境部分內部可以做些什麼有一些限制,我得到的消息如下所示: 可以只與+連接,env var只能是值或函數調用。 我嘗試了一些與這些提示變化,但仍然沒有運氣。使用Jenkins管道中的選項從嵌套地圖定義env變量

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 
     """ 
     } 
    } 
    } 
}