2016-03-25 3 views
4

У меня есть конвейер потока сборки (https://wiki.jenkins-ci.org/display/JENKINS/Build+Flow+Plugin), установленный в Jenkins, который порождает две или более дочерние задания, каждая из которых запускает тесты Junit.Программный доступ к детским сборкам в потоке сборки Jenkins

def childjobs = [] 

// some logic to populate the children jobs array 

// Run the jobs in parallel 
parallel(childjobs) 

Я пытаюсь написать сценарий Groovy в контексте родительской работы с использованием API Дженкинс, чтобы отправить краткую электронную почту от родительского задания, собирая резюме от детей.

Как я могу получить доступ к информации о сборке (успех/неудача, сколько неудач, продолжительность, результаты 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

Спасибо @Tuffwer. Информация в проводке в основном связана с объединением артефактов из дочерних заданий на родителя. Мое требование отличается тем, что я пытаюсь получить доступ к «задаче» задания для детей из родительского задания. – naspras

ответ

0

Это мне потребовалось некоторое время, чтобы играть с моделировочной Flow и Дженкинс 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.

Получение результатов Junit должно быть простым путем анализа файла результата JSON, как указано в How to get the number of tests run in Jenkins with JUnit XML format in the post job script?.

 Смежные вопросы

  • Нет связанных вопросов^_^