我正在尝试构建一个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
请告诉我这里缺少什么 提前致谢
答案 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/
}
}