2016-03-25 5 views
4

Jenkinsでビルドフローパイプライン(https://wiki.jenkins-ci.org/display/JENKINS/Build+Flow+Plugin)をセットアップして、それぞれがJunitテストを実行する2つ以上の子ジョブを生成しています。Jenkinsのビルドフローで子ビルドにプログラムでアクセスする

def childjobs = [] 

// some logic to populate the children jobs array 

// Run the jobs in parallel 
parallel(childjobs) 

私は子供から要約を収集することにより、親ジョブから要約メールを送信するためにジェンキンスのAPIを使用して、親の仕事の関係でのGroovyスクリプトを記述しようとしています。

子ジョブのビルド情報(成功/失敗、失敗回数、継続時間、Junit結果など)に親ジョブからアクセスするにはどうすればよいですか? は、概念的には、このような何か:

for (AbstractBuild<?,?> childjob in childjobs) { 
    // get build info from childjob 
    // get Junit results from childjob 
} 
+0

これが役立つかどうかは、http://stackoverflow.com/questions/19808181/aggregating-results-of-downstream-is-no-test-in-jenkins – Tuffwer

+0

Thanks @Tuffwerをご覧ください。転記の情報は、主に子供の仕事から親にアーチファクトを集めることに関するものです。私の要件は、私が親の仕事から子供の仕事「オブジェクト」にアクセスしようとしている点で異なっています。 – naspras

答えて

0

それはビルドの流れとジェンキンス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結果を簡単に取得できます。

関連する問題