Jenkins 管道条件环境变量

SSF*_*SSF 4 groovy jenkins

我在environmental声明性管道的指令部分有一组静态环境变量。这些值可用于管道中的每个阶段。我希望根据任意条件更改值。有没有办法做到这一点?

pipeline {
   agent any
   environment {
     if ${params.condition} {
     var1 = '123'
     var2 = abc
    } else {
     var1 = '456'
     var2 = def
     }
   }
   stages {
     stage('One') {
      steps {
        script {
        ...
        echo env.var1
        echo env.var2            
        ...
     }
    }
   }
  }
  stag('Two'){
   steps {
        script {
        ...
        echo env.var1
        echo env.var2
        ...
     }
   }
 }
Run Code Online (Sandbox Code Playgroud)

use*_*090 7

我建议您创建一个阶段“环境”并根据您想要的条件声明您的变量,如下所示:-

pipeline {
   agent any
   environment {
     // Declare variables which will remain same throughout the build
   }
   stages {
     stage('Environment') {
                agent  { node { label 'master' } }
                steps {
                    script {
                       //Write condition for the variables which need to change
                       if ${params.condition} {
                                 env.var1 = '123'
                                 env.var2 = abc
                                } else {
                                 env.var1 = '456'
                                 env.var2 = def
                                 }
                        sh "printenv"
                    }
                }
            }
         stage('One') {
          steps {
            script {
            ...
            echo env.var1
            echo env.var2            
            ...
         }
        }
       }
      stage('Two'){
       steps {
            script {
            ...
            echo env.var1
            echo env.var2
            ...
         }
       }
    }
    }
}
Run Code Online (Sandbox Code Playgroud)


fro*_*tin 7

寻找同样的东西,我在其他问题中找到了一个很好的答案

基本上是使用三元条件运算符

pipeline {
    agent any
    environment {
        var1 = "${params.condition == true ? "123" : "456"}"
        var2 = "${params.condition == true ? abc : def}"
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:请记住,按照您写问题的方式(我做了我的回答),数字是字符串,字母是变量。