我在Jenkins中设置了一个构建流程管道(https://wiki.jenkins-ci.org/display/JENKINS/Build+Flow+Plugin),它生成了两个或多个子作业,每个作业都运行Junit测试。
def childjobs = []
// some logic to populate the children jobs array
// Run the jobs in parallel
parallel(childjobs)
我正在尝试使用Jenkins API在父作业的上下文中编写Groovy脚本,以通过从子作业中收集摘要来从父作业发送摘要电子邮件。
如何从父作业访问子作业的构建信息(成功/失败,失败次数,持续时间,Junit结果等)? 概念上是这样的:
for (AbstractBuild<?,?> childjob in childjobs) {
// get build info from childjob
// get Junit results from childjob
}
答案 0 :(得分:1)
我花了一段时间玩Build Flow和Jenkins API,最后我得到了这个:
import hudson.model.*
import groovy.json.*
// Assign a variable to the flow run
def flow = parallel(
{build("child-dummy", branch_name: "child1")},
{build("child-dummy", branch_name: "child2")}
)
println 'Main flow ' + flow.getClass().toString() + ', size: ' + flow.size()
flow.each { it -> // type = com.cloudbees.plugins.flow.FlowState
def jobInvocation = it.getLastBuild() // type = com.cloudbees.plugins.flow.JobInvocation
println 'Build number #' + jobInvocation.getNumber()
println 'Build URL ' + jobInvocation.getBuildUrl()
}
要从子作业中获取运行的详细信息(例如工件等),请使用返回jobInvocation.getBuild()
实例的Run
方法。
通过解析How to get the number of tests run in Jenkins with JUnit XML format in the post job script?中指定的JSON结果文件,获取Junit结果应该很容易。