如何在jenkins中启动另一个作业时获取内部错误消息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在jenkins中启动另一个作业时获取内部错误消息相关的知识,希望对你有一定的参考价值。

所以我有一个管道产生其他工作(包含在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变量。但我不确定实现这一目标的最简单方法。谢谢。

答案

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

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

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,这就是如何在外部作业中检索它。希望这有助于其他人使用相同的使用条件。

以上是关于如何在jenkins中启动另一个作业时获取内部错误消息的主要内容,如果未能解决你的问题,请参考以下文章

如何从另一个jenkins(本地)调用1个jenkins(远程jenkins)中配置的作业

如何从 jenkins 作业的 scm 轮询中排除 jenkins 文件

如何使用服务挂钩从VSTS触发内部部署jenkins作业

当 jenkins 作业作为“执行 Maven 发布”运行时,如何在 shell 步骤中获取参数 MVN_RELEASE_VERSION 的值?

Jenkins 从 Git 获取代码时挂起

如何在 Jenkins master 中禁用构建