2016-03-25 18 views
4

Jenkins'de her biri Junit testleri çalıştıran iki veya daha fazla çocuk işi üreten bir yapı akış borusu (https://wiki.jenkins-ci.org/display/JENKINS/Build+Flow+Plugin) kurulumum var. Program aracılığıyla erişime çocukların yapıları Jenkins yapı akışında

def childjobs = [] 

// some logic to populate the children jobs array 

// Run the jobs in parallel 
parallel(childjobs) 

Ben çocuklardan özetleri toplayarak üst işten özet e-posta göndermek Jenkins API kullanarak ana iş bağlamında bir Groovy senaryo yazmaya çalışıyorum.

Ana işten çocukların işlerinin yapılış bilgilerine (başarı/başarısızlık, kaç hata, süre, Junit sonucu vb.) Nasıl erişebilirim? Bu gibi Kavramsal olarak bir şey:

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

Bu yardımcı olmanıza yardımcı olur mu? Http://stackoverflow.com/questions/19808181/aggregating-results-of-downstream-is-no-test-in-jenkins – Tuffwer

+0

Teşekkürler @Tuffwer. Gönderide yer alan bilgiler esas olarak çocuk işlerinden gelen eserleri ebeveyn üzerine toplamakla ilgilidir. Benim ihtiyacım farklıdır, çünkü ana işten çocukların “nesneler” işine erişmeye çalışıyorum. – naspras

cevap

0

Bu Yapı Akış ve Jenkins API ile oynamak için biraz zaman aldı ve sonunda bu var:

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() 
} 

böyle vadede ayrıntılarını elde etmek için Çocuk işleri gibi yapay nesneler vb. olarak, Run örneğini döndüren jobInvocation.getBuild() yöntemini kullanın.

Junit sonuçlarını almak, JSON sonuç dosyasını How to get the number of tests run in Jenkins with JUnit XML format in the post job script?'da belirtildiği gibi ayrıştırmak suretiyle kolay olmalıdır.