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

标签 jenkins groovy jenkins-pipeline

我正在尝试建立一个 Jenkins 管道,其中我有一个带有n个选择的选择参数,并且想要创建一个stage,当从choice参数中选择了一些值时,它会执行某些操作
我有类似下面的内容,但似乎无法正常工作。

#!/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的选定值是namead时,我想f对于以上内容,我没有收到任何错误,但是我在控制台输出中看到了这一点

在构建过程中选择值Stage 'callNames' skipped due to when conditional时的a/d/f
请让我知道这里缺少什么
提前致谢

最佳答案

您的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/
    }
}

关于Jenkins管道条件阶段,使用 "When"作为选择参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50381586/

相关文章:

java - CRC32 计算与默认计算不匹配

jenkins - 如何使用配置文件提供程序插件从 Jenkins 管道内的配置文件中读取属性

jenkins - 使用 jenkins 管道内的 bash 从 package.json 中提取版本

maven - 如何在 Jenkins 中创建一个后台进程?设置 BUILD_ID 并使用 nohup 似乎不起作用

spring - 如何在 Gradle 构建脚本中加载 .yml 属性?

mysql - 通过 ssh 使用 SQL 脚本失败,但直接在主机上启动时不会

Jenkins 节点启动卡住

linux - Jenkinsfile 环境变量未反射(reflect)在脚本部分中调用的 Makefile 中

jenkins - Repo、gerrit 和 Jenkins 合作

hibernate - Grails - 非空属性引用空值或 transient 值