我正在尝试找到解决方法,因为第一个问题仍未得到解答。无法使用 Jenkins 的凭据运行 Start-Job https://stackoverflow.com/questions/48397232/cant-run-start-job-with-credentials-from-jenkins
我有工作 A。工作 A 在服务器上启动 powershell 脚本并显示一些输出。
我还有一个管道 B,它针对不同的服务器运行作业 A 的多个副本。
这是常规代码
stage 'Copy sources from Git'
build job: 'DeploymentJobs/1_CopySourcesFromGit'
stage 'Deploy to servers'
def servers = env.SERVERLIST.split('\n')
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
}
如果您确实想确保您获得的构建是由您的作业触发的,您可以从构建对象中获取构建原因。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)