Конвейеры Дженкинса: Как запустить один этап параллельно многим?

#jenkins #jenkins-pipeline

#Дженкинс #дженкинс-конвейер

Вопрос:

Я хотел бы запустить один этап параллельно двум этапам и все это после трех других этапов.

Что-то вроде этого (недопустимый синтаксис как есть):

 pipeline {
    stages {
        stage('Build A') {
        }
        stage('Build B') {
        }
        stage('Build C') {
        }
        parallel {
            stages {
                stage('Build D1') {
                }
                stage('Build D2') {
                }
            }
            stage('Build D3') {
            }
        } 
    }
}
  

Возможно ли организовать такую структуру?

Ответ №1:

Способ сделать это — последовательные этапы параллельно.

 pipeline {
    agent none

    stages {
        stage("build and deploy on Windows and Linux") {
            parallel {
                stage("windows") {
                    agent {
                        label "windows"
                    }
                    stages {
                        stage("build") {
                            steps {
                                bat "run-build.bat"
                            }
                        }
                        stage("deploy") {
                            when {
                                branch "master"
                            }
                            steps {
                                bat "run-deploy.bat"
                            }
                        }
                    }
                }

                stage("linux") {
                    agent {
                        label "linux"
                    }
                    stages {
                        stage("build") {
                            steps {
                                sh "./run-build.sh"
                            }
                        }
                        stage("deploy") {
                             when {
                                 branch "master"
                             }
                             steps {
                                sh "./run-deploy.sh"
                            }
                        }
                    }
                }
            }
        }
    }
}