使用Jenkins管道中的选项从嵌套映射定义env变量

时间:2017-08-03 18:02:55

标签: jenkins groovy jenkins-pipeline

我想要实现的是:用户将选择一个环境,然后我可以为该环境(URL,DB等)设置适当的环境变量。 可能吗? 我尝试了很多东西:在环境中进行插值,尝试在不同的地方定义环境地图但没有运气。 我的环境映射变量在环境部分是不可访问的,并且在环境部分内部可以做什么似乎也有一些限制,我得到了以下消息: 你只能用+连接,env var只能是值或函数调用。 我试着用这些提示做了一些修改,但仍然没有运气。

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

1 个答案:

答案 0 :(得分:1)

这有效:)

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