使用Jenkins v2.138.2
和工作流聚合器v2.6
,我试图定义一个条件input
步骤,该步骤取决于作业参数的值,如下所示:
stage('apply') {
when { expression { params.apply_plan != 'no' } }
if (params.apply_plan != 'yes') {
input {
message 'Apply this plan?'
}
}
steps {
withAWS(region: 'us-east-1', role: assume_role) {
dir(path: tf_dir) {
sh "make apply"
}
}
}
}
但是这种if { ( ... ) input { ...} }
语法给我一个运行时错误:
java.lang.ClassCastException:org.jenkinsci.plugins.workflow.support.steps.input.InputStep.message需要类java.lang.String但收到了org.jenkinsci.plugins.workflow.cps.CpsClosure2
有什么想法吗?
谢谢, 克里斯
答案 0 :(得分:1)
我认为您在这里使用了错误的语法。 input { … }
仅作为指令有效(在steps
下方stage
的外部)。您要使用的是here中描述的input
步骤。基本上,您只需要除去花括号并将其放入script
中的steps
中:
stage("stage") {
steps {
script {
if (params.apply_plan != 'yes') {
input message: 'Apply this plan?'
}
}
withAWS(region: 'us-east-1', role: assume_role) {
dir(path: tf_dir) {
sh "make apply"
}
}
}
}