Jenkins管道:查看子构建作业的日志

Jenkins管道:查看子构建作业的日志,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我有一个jenkins管道,它运行一个“作业”作为它的一个阶段。我想知道,是否有一种方法可以在管道中查看构建作业的日志,而无需单击作业并查看控制台输出。它只会使您更容易看到故障,而无需多次单击。是的,有一种方法可以做到这一点,不幸的是,它看起来好像没有文档记录: build返回类型为RunWrapper的对象,您可以使用该对象通过getRawBuild()访问Run对象。不幸的是,Run类不可序列化,因此需要将调用封装在@NonCPS方法中 重要的是,getRawBuild()将无法从沙盒中工作

我有一个jenkins管道,它运行一个“作业”作为它的一个阶段。我想知道,是否有一种方法可以在管道中查看构建作业的日志,而无需单击作业并查看控制台输出。它只会使您更容易看到故障,而无需多次单击。

是的,有一种方法可以做到这一点,不幸的是,它看起来好像没有文档记录:

build
返回类型为
RunWrapper
的对象,您可以使用该对象通过
getRawBuild()
访问
Run
对象。不幸的是,
Run
类不可序列化,因此需要将调用封装在
@NonCPS
方法中

重要的是,
getRawBuild()
将无法从沙盒中工作。为了使用它,您要么禁用Groovy沙盒,要么在某个全局共享库中编写包装器

import org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper

@NonCPS
String getLogFromRunWrapper(RunWrapper runWrapper, int logLines) {
    runWrapper.getRawBuild().getLog(logLines).join('\n')
}

RunWrapper buildInfo = build job: 'TestJob'
echo "Log of test job:"
echo getLogFromRunWrapper(buildInfo, 2000)
您需要根据需要调整日志行数以检索。 当然,只有当您决定等到子任务完成时,它才会正常工作

另见:


是的,有一种方法可以做到这一点,不幸的是,它看起来好像没有文档记录:

build
返回类型为
RunWrapper
的对象,您可以使用该对象通过
getRawBuild()
访问
Run
对象。不幸的是,
Run
类不可序列化,因此需要将调用封装在
@NonCPS
方法中

重要的是,
getRawBuild()
将无法从沙盒中工作。为了使用它,您要么禁用Groovy沙盒,要么在某个全局共享库中编写包装器

import org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper

@NonCPS
String getLogFromRunWrapper(RunWrapper runWrapper, int logLines) {
    runWrapper.getRawBuild().getLog(logLines).join('\n')
}

RunWrapper buildInfo = build job: 'TestJob'
echo "Log of test job:"
echo getLogFromRunWrapper(buildInfo, 2000)
您需要根据需要调整日志行数以检索。 当然,只有当您决定等到子任务完成时,它才会正常工作

另见: