如何在上游作业中获取下游作业的控制台产量? [英] How to get console output of downstream job in upstream job?
本文介绍了如何在上游作业中获取下游作业的控制台产量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试寻找解决方法,因为第一个问题仍未得到回答。 can't run Start-Job with credentials from Jenkins
我有作业A。作业A在服务器上启动PowerShell脚本并显示一些输出。
我还有一个管道B,它在不同的服务器上运行作业A的多个副本。 以下是groovy代码stage 'Copy sources from Git'
build job: 'DeploymentJobs/1_CopySourcesFromGit'
stage 'Deploy to servers'
def servers = env.SERVERLIST.split('
')
def steps =[:]
for (int i=0; i<servers.size(); i++) {
def server = servers[i]
def stepName = "running ${server}"
steps[stepName] = {->
echo server
build job: 'DeploymentJobs/2_DeployToServer', parameters:
[booleanParam(name: 'REBOOTAFTER', value: Boolean.valueOf(REBOOTAFTER)),
string(name: 'SERVERNAME', value: server)]
}
}
parallel steps
在管道的输出中,我只看到作业A的N个副本已启动的信息,但没有它们的输出。
我希望在管道B的控制台输出中仅看到作业A的所有实例的PowerShell输出。
我不知道怎么做,可以吗?
推荐答案
更短的替代方案:
def result = build job: 'job_name', wait: true
println result.getRawBuild().getLog()
必须将两种方法都列入白名单。
编辑:由于您不想等待生成运行,因此可以在作业结束时(或在所有触发的生成应完成后的某个时间点)添加此命令,在本例中,number_of_Builds将为servers.size()。
def job = Jenkins.getInstance().getItemByFullName('job_A_name')
def last_build = job.getLastBuild().getNumber()
def first_build = last_build - number_of_builds
(first_build..last_build).each {
println "Log of build $it"
def build = job.getBuildByNumber(it)
println build.log
}
如果您确实要确保您正在获取的生成是由您的作业触发的生成,您可以从Build对象中获取生成原因。
这篇关于如何在上游作业中获取下游作业的控制台产量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文