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

use*_*718 3 groovy jenkins jenkins-pipeline

我正在尝试建立一个詹金斯管道,其中我有一个带有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

            }
        }        
    }
}
Run Code Online (Sandbox Code Playgroud)

所以,我想do something为参数选择的值namea或时df 对于上述,我没有收到任何错误,但是我在控制台输出中看到了这一点。

Stage 'callNames' skipped due to when conditional当我a/d/f在构建过程中选择值时

请让我知道这里缺少什么

Tra*_*nin 8

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

你可能想做

when {
    expression { 
        params.name == 'a' ||
        params.name == 'd' ||
        params.name == 'f' 
    }
}
Run Code Online (Sandbox Code Playgroud)

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

when {
    expression { 
        params.name ==~ /a|d|f/
    }
}
Run Code Online (Sandbox Code Playgroud)