运维开发网

email – 以编程方式访问Jenkins构建流程中的子构建

运维开发网 https://www.qedev.com 2020-05-10 11:18 出处:网络 作者:运维开发网整理
我在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
我在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
}
我花了一段时间来使用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()
}

要从子作业获取运行的详细信息(例如工件等),请使用返回Run实例的jobInvocation.getBuild()方法.

通过解析How to get the number of tests run in Jenkins with JUnit XML format in the post job script?中指定的JSON结果文件,可以轻松获得Junit结果.

0

精彩评论

暂无评论...
验证码 换一张
取 消