我有一个流水线步骤,它等待用户输入,并且基于this solution的超时值为1分钟
def deployFlag
:
:
timeout(1) {
script{
deployFlag = input message: 'Deploy On build ?', ok: 'Proceed ?', parameters: [choice(choices: 'true\nfalse',
description: 'Select true or false', name: 'Deploy'), string(defaultValue: 'false', description: '', name: 'deploy')]
}
}
这正常工作。
是否有一种方法可以更改此设置,以便在超时时间段之后以默认值false
进行处理?
现在,如果未选择任何内容,则作业将失败,并显示“由于超时...取消嵌套步骤...”。
答案 0 :(得分:2)
timeout
步骤在达到给定超时时将抛出org.jenkinsci.plugins.workflow.steps.FlowInterruptedException
。您可以捕获此异常并在catch
块中设置默认值。考虑以下示例:
node {
stage("Test") {
def deployFlag
try {
timeout(1) {
deployFlag = input message: 'Deploy On build ?', ok: 'Proceed ?', parameters: [choice(choices: 'true\nfalse', description: 'Select true or false', name: 'Deploy'), string(defaultValue: 'false', description: '', name: 'deploy')]
}
} catch (org.jenkinsci.plugins.workflow.steps.FlowInterruptedException e) {
deployFlag = [Deploy: true, deploy: false]
}
println deployFlag
}
}
捕获此异常将使管道继续构建而不是失败。