Решение. Используйте failFast
флаг для конвейера Jenkins.
Из документации: вы можете принудительно использовать параллельные этапы для всех быть прервано, когда один из них выходит из строя, путем добавления failFast
true к этапу, содержащему параллель.
Обратите внимание, что все задания будут запущены и завершены (в случае сбоя одного из них), если узел агента был запущен в каждом из них (если задание «а» в конвейере завершается сбоем, но задание «б» все еще ищет для узла, который еще не запущен, он продолжится — [это крайний случай]).
Примеры. Варианты:
1. Используйте метод parallelsAlwaysFailFast в конвейере параметров:
pipeline {
agent any
options {
parallelsAlwaysFailFast()
}
stages {
stage('Non-Parallel Stage') {
steps {
echo 'This stage will be executed first.'
}
}
stage('Parallel Stage') {
when {
branch 'master'
}
parallel {
stage('Branch A') {
agent {
label "for-branch-a"
}
steps {
echo "On Branch A"
}
}
stage('Branch B') {
agent {
label "for-branch-b"
}
steps {
echo "On Branch B"
}
}
stage('Branch C') {
agent {
label "for-branch-c"
}
stages {
stage('Nested 1') {
steps {
echo "In stage Nested 1 within Branch C"
}
}
stage('Nested 2') {
steps {
echo "In stage Nested 2 within Branch C"
}
}
}
}
}
}
}
2. Используйте перед параллельным использованием failFast true
stage('Parallel Stage') {
when {
branch 'master'
}
failFast true
parallel {
3. Настройте задания на карте и выполните их с включенным атрибутом failFast.
jobsList = [
{job: 'jobA', parameters: [booleanParam(name: 'flag', value: true)]},
{job: 'jobB', parameters: [booleanParam(name: 'flag', value: true)]}
]
jobsList.failFast = true
parallel(jobsList)
person
avivamg
schedule
27.11.2019