Jenkins管道条件阶段使用“When”作为选择参数

时间:2018-05-17 00:07:59

标签: jenkins groovy jenkins-pipeline

我正在尝试构建一个jenkins管道,其中我有一个带有n个选项的选项参数,并且想要创建一个stage,当选择参数中的某些值时,它会执行某些操作 我有类似下面的东西,但似乎没有工作。

#!/usr/bin/env groovy

pipeline {

agent any

    parameters {

        choice(
                choices: 'a\nb\n\c\n\d\ne\nf',
                description: 'name of the student',
                name: 'name'
        )
    }
 stages {
       stage ('callNames') {

        when {
             expression { params.name == 'a|d|f' }
        }
        steps{
        echo "selected name is: ${name}"
        //do something

            }
        }        
    }
}

因此,当参数do something的选定值为name的{​​{1}}或a时,我想d 对于上面的内容,我没有错误,但我在控制台输出中看到了这个

在构建

期间选择值f时,

Stage 'callNames' skipped due to when conditional

请告诉我这里缺少什么 提前致谢

1 个答案:

答案 0 :(得分:4)

您的when表达式出错。如果参数的name值为'a',则表示您正在比较代码中的字符串'a' == 'a|d|f',即false

您可能想要

when {
    expression { 
        params.name == 'a' ||
        params.name == 'd' ||
        params.name == 'f' 
    }
}

或者,如果您更喜欢oneliner,则可以使用正则表达式

when {
    expression { 
        params.name ==~ /a|d|f/
    }
}