在超时的情况下,如何为变量设置默认值?

时间:2019-04-16 00:52:55

标签: jenkins-pipeline

我有一个流水线步骤,它等待用户输入,并且基于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进行处理?

现在,如果未选择任何内容,则作业将失败,并显示“由于超时...取消嵌套步骤...”。

1 个答案:

答案 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
    }
}

捕获此异常将使管道继续构建而不是失败。