Jenkinsfile根据环境变量定义变量



如果我的一个环境变量等于字符串,我想将布尔变量设置为true。我只想在这个RUN_TESTS变量为true的情况下运行我的测试阶段。

pipeline{
environment {
RUN_TESTS = expression { "${env.JOB_BASE_NAME}" == 'Test Pipeline' }
}
stages{
stage('test'){
when {
expression { RUN_TESTS }
}
steps{
// run my tests.......
}

}
}

不过,以上内容不起作用。

如何根据环境变量的值设置布尔变量,然后使用该变量有条件地运行管道阶段?

在这种情况下,您似乎不必设置环境变量。你可以直接在你的阶段评估表达:

pipeline{
stages{
stage('test'){
when {
expression { "${env.JOB_BASE_NAME}" == 'Test Pipeline' }
}
steps{
// run my tests.......
}

}
}

另一方面,如果你仍然需要设置环境变量,那么几乎没有什么方法可以做到

Environment variable values must either be single quoted, double quoted, or function calls.
  1. 用双引号括起来:
environment {
RUN_TESTS = "${env.JOB_BASE_NAME == 'Test Pipeline'}"
}
  1. 在函数调用中包装此表达式,如下所示:
def run_tests() {
return "${env.JOB_BASE_NAME}" == 'Test Pipeline' 
}
pipeline{
environment {
RUN_TESTS = run_tests()
}
stages{
stage('test'){
when {
expression { RUN_TESTS }
}
steps{
// run my tests.......
}
}
}

但总的来说,我会选择第一种方法

最新更新