Как запустить несколько этапов одновременно, используя несколько параллельных блоков? - PullRequest
0 голосов
/ 24 ноября 2018

enter image description here

Здесь мне нужно выполнить одновременно и Parallel test 1, и Parallel test 2.

Когда я пытался поместить параллельный блок поверх них, он выдает ошибку, так как упоминал об этом на официальном сайте Note: that a stage must have one and only one of steps, stages, or parallel.

pipeline {
agent any
stages {
    stage('Parallel Test 1') {
        parallel {
            stage('Block 1 - Stage 1') {
                steps {
                    echo "Block 1 - Stage 1"
                    build(job: 'jenkins_job_1')
                }
            }
            stage('Block 1 - Stage 2') {
                steps {
                    echo "Block 1 - Stage 2"
                    build(job: 'jenkins_job_2')
                }
            }
        }
    }
    stage('Parallel Test 2') {
        parallel {
            stage('Block 2 - Stage 1') {
                steps {
                    echo "Block 2 - Stage 1"
                    build(job: "jenkins_job_3")
                }
            }
            stage('Block 2 - Stage 2') {
                steps {
                    echo "Block 2 - Stage 2"
                    build(job: "jenkins_job_4")
                }
            }
        }
    }
}

}

1 Ответ

0 голосов
/ 24 ноября 2018

Вам не нужно помещать каждый вызов в параллельное задание внутри сцены, поэтому вы можете сделать это следующим образом:

pipeline {
    agent any
    stages {
        stage('single run') {
            parallel {
                stage('Parallel Test 1') {
                    steps {
                        script {
                            def group1 = [:]
                            group1["test_1"] = {
                                echo "test_1"
                                sh(script: "date -u")
                                build(job: 'jenkins_job_1')
                            }
                            group1["test_2"] = {
                                echo "test_2"
                                sh(script: "date -u")
                                build(job: 'jenkins_job_2')
                            }
                            parallel group1
                        }
                    }
                }
                stage('Parallel Test 2') {
                    steps {
                        script {
                            def group2 = [:]
                            group2["test_3"] = {
                                echo "test_3"
                                sh(script: "date -u")
                                build(job: 'jenkins_job_3')
                            }
                            group2["test_4"] = {
                                echo "test_4"
                                sh(script: "date -u")
                                build(job: 'jenkins_job_4')
                            }
                            parallel group2
                        }
                    }
                }
            }
        }
    }
}
...