У меня есть следующий (часть a) конвейер
stages {
stage('bootstrap') {
parallel {
stage("Linux") {
agent { label 'linux' }
steps {
sh 'bootstrap.sh'
}
}
stage("Windows") {
agent { label 'Windows' }
steps {
bat 'bootstrap.bat'
}
}
}
}
stage('devenv') {
parallel {
stage('Linux') {
agent { label 'linux' }
steps {
sh 'devenv.sh'
}
}
stage('Windows') {
agent { label 'Windows' }
steps {
bat 'devenv.bat'
}
}
}
}
}
post {
always {
echo "Done"
}
}
Проблема заключается в том, что когда bootstrap .bat завершается ошибкой на windows, шаг devenv теперь считается неудачным, а linux devenv не будет продолжаться. Я хотел бы получить результаты конвейера linux, даже если один windows рано выходит из строя.
Можно было бы разделить этапы так, чтобы полный конвейер linux находился в одной ветви параллельное выполнение, а windows - с другой, но, возможно, есть хитрость, о которой я не подозреваю, потому что я попробовал ее, и она не выглядит приемлемым синтаксисом.
Редактировать
Предлагаемое исправление не работает. Это конвейер
pipeline {
agent none
parallel {
stage('Linux') {
agent { label 'linux' }
stages {
stage('bootstrap') {
sh "ls"
}
stage('devenv') {
sh "ls"
}
}
}
stage('windows') {
agent { label 'Windows' }
stages {
stage('bootstrap') {
bat 'dir'
}
stage('devenv') {
bat 'dir'
}
}
}
}
}
Это сообщение об ошибке
WorkflowScript: 8: Undefined section "parallel" @ line 8, column 5.
parallel {
^
WorkflowScript: 1: Missing required section "stages" @ line 1, column 1.
pipeline {
^