Jenkins Workflow Параллельный шаг и соединения

В настоящее время я использую шаг сборки parallel в сценарии Jenkins Workflow, где создание каждой ветки занимает разное количество времени.

parallel(fastBranch: {
    // Do something fast
}, slowBranch: { 
    // Do something slow
})

У меня есть проблема, когда я думаю, что, возможно, slowBranch не завершается, потому что fastBranch быстрее, это возможно? Есть ли какой-либо механизм соединения на шаге parallel, чтобы следующая строка не выполнялась до тех пор, пока не будут завершены все ветки.


person user3617723    schedule 01.12.2015    source источник
comment
Поведение по умолчанию точно такое, как вы ожидаете. Следующий шаг (после parallel) достигается, когда завершаются обе ветви. Вы можете изменить это поведение, используя failFast: true|false в качестве параметра parallel: если true, то параллельный шаг останавливает любое выполнение любой ветви сразу после сбоя одной из них. Но это явно не то, что вы хотите. У вас есть дополнительная информация? (трассировки стека, журналы и т. д.)   -  person amuniz    schedule 03.12.2015


Ответы (2)


Да, есть присоединение. Для этой работы:

parallel(fastBranch: {
    build("Test_fast")
}, slowBranch: { 
    build("Test_slow")
})
build("Test_join")

Лог:

parallel {
    Schedule job Test_fast
    Schedule job Test_slow
    Build Test_fast #1 started
    Build Test_slow #1 started
    Test_fast #1 completed 
    Test_slow #1 completed 
}
Schedule job Test_join
Build Test_join #1 started
Test_join #1 completed 

Время:

Fast Start:  17:06:00
Fast Finish: 17:06:01
Slow Start:  17:06:00
Slow Finish: 17:06:20
Join Start:  17:06:30
Join Finish: 17:06:30
person ISanych    schedule 01.12.2015

Это не должно быть возможно. Я использую parallel для 25 параллельных заданий, и все они завершаются в разное время. После того, как все они закончат выполнение, он обработает все шаги после вызова parallel.

person Jeff    schedule 08.03.2016