我正在使用声明性詹金斯管道。我有一个阶段,可以像这样从用户那里获取输入
//Input
stage ('Manual Input'){
agent none
steps {
input message: "Please Approve", ok: 'Approve'
}
}
我不希望在詹金斯(Jenkins)等待手动步骤完成时阻止任何特工,所以我使用了agent none
。
我想知道是否有一种方法可以使该阶段有条件地执行。
详细说明:
pipeline {
agent none
parameters {
choice(choices: "No\nYes",
description: 'Choose Yes to wait for Manual Input',
name: 'Input')
}
stages {
stage ('Stage_1'){
agent any
steps {
//Some Steps here
}
}
//Input stage which should only get executed if ${Input} is Yes
// Or else Directly go to Stage 3
stage ('Manual Input'){
agent none
steps {
input message: "Please Approve", ok: 'Approve'
}
}
stage ('Stage_3'){
agent any
steps {
//Some Steps here
}
}
}
}
我希望Jenkins执行“ Stage_1”,然后仅在参数“ Input”为“ Yes”时执行“手动输入”阶段,否则跳过“手动输入”阶段并转到“ Stage_3”。
由于if/else
,我无法在“手动输入”阶段的script{}
块中执行agent none
。会引发错误。
非常感谢您的帮助! TIA
答案 0 :(得分:0)
基本上,您要做的就是在第二阶段添加一个when
语句,您希望它看起来像这样:
stage ('Manual Input'){
agent none
when{
expression { params.Input == 'Yes' }
}
steps {
input message: "Please Approve", ok: 'Approve'
}
}
您可以在此here上找到文档。 (对于这种情况,您会发现equals
更合适)