2017-08-03 36 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 
     """ 
     } 
    } 
    } 
}