如何处理Jenkins Job DSL种子作业中的异常?

时间:2017-09-20 19:51:04

标签: jenkins groovy jenkins-job-dsl

如果我有一个Git存储库,里面装满了Job DSL groovy脚本和一个典型的种子工作,例如:

job('seed') {
    //... scm, triggers etc.
    steps {
        dsl {
            external 'jobs/**/*.groovy'
        }
    }
    //... more config etc.
}

如果某个作业dsl脚本由于某种原因抛出异常会发生什么,例如:

job('deliberate-fail') {
    throw new Exception("Arrrgggghhh")
}

是否可以在种子作业中处理此异常,或整个种子作业是否会失败?

如果只有一个可以工作 - 种子作业是否可以记录不稳定结果而不是 FAILURE

我真的不希望一个坏苹果破坏一堆

1 个答案:

答案 0 :(得分:0)

基于Opal建议使用try-catch,我修改了作业以捕获异常并向控制台输出错误。

job('deliberate-fail') {
    try {
        throw new Exception("Arrrgggghhh")
    } catch (Exception ex){
        println("deliberate-fail job is [UNSTABLE]")
    }
}

由于我目前正在使用Job DSL plugin(而不是Jenkins Pipeline脚本),我不认为Opal建议使用" currentBuild.result =& #39; UNSTABLE' "我可以使用。经过一番挖掘后,我发现我可以使用Text-Finder plugin在控制台中搜索" [不稳定] "错误并相应地更改种子作业状态。

job('seed-job') {
     steps {
        dsl {
            external '**/*_jobdsl.groovy'
        }
    }
    publishers {
        textFinder(/[UNSTABLE]/, '', true, false, true)
    }    
}

有点令人费解,但似乎有效!