代码之家  ›  专栏  ›  技术社区  ›  Prashanth Sams

如何使用多个并行块同时运行多个阶段?

  •  0
  • Prashanth Sams  · 技术社区  · 7 年前

    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 回复  |  直到 7 年前
        1
  •  1
  •   Prashanth Sams    7 年前

    您不必将每个对并行作业的调用都放在一个阶段内,因此您可以这样做:

    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
                            }
                        }
                    }
                }
            }
        }
    }