在詹金斯开始另一项工作时如何获取内部错误消息

时间:2019-02-08 01:58:55

标签: jenkins groovy jenkins-pipeline

所以我有一个生成其他作业的管道(包裹在try / catch中),如下所示:

script {
    try {
        new_job = build job: 'SomeJob'
    } catch (err) {
        err_msg = err.getMessage()
        error(err_msg)
    }
}

,并且在产生的作业失败时失败,这是预期的。但是,如果生成的作业失败,则会失败,并显示一条错误消息,因为我使用了以下内容:

if (badCondition) {
    error("BUILD FAILED BECAUSE OF INVALID CONDITION")
}

但是在顶级作业的日志中,它表示如下:

SomeJob #11 completed with status FAILURE (propagate: false to ignore)

我想以某种方式获取内部错误消息,因此我可以使用它来分析错误,而不必进入内部日志。我愿意接受其他方法,例如设置/返回一些env变量。但是我不确定实现这一目标的最简单方法。谢谢。

1 个答案:

答案 0 :(得分:0)

所以我想出了一个简单的解决方法。

在内部工作中。将错误消息设置为环境变量:

if (badCondition) {
    error_msg = "BUILD FAILED BECAUSE OF INVALID CONDITION"
    env.BUILD_FAILED_MESSAGE = error_msg
    error(error_msg)
}

在外部作业中,生成作业时忽略了传播(因此所有作业都“通过”)

script {
    new_job = build job: 'SomeJob', propagate: false
    if (new_job.getResult() == "FAILURE") {
        error(new_job.getBuildVariables().get("BUILD_FAILED_MESSAGE"))
    }
}

因此,请确保已将所有失败条件设置为env,BUILD_FAILED_MESSAGE,这是在外部作业中进行检索的方式。希望这对使用条件相同的其他人有所帮助。