运行 通过 Jenkins 声明式管道语法并行执行多个作业

Run multiple Jobs in parallel via Jenkins Declarative pipeline syntax

我想使用声明性语法从单个管道并行执行多个作业。这可能吗!!我知道我们可以使用“并行”参数创建声明式并行管道。

pipeline {

    agent any
    parallel{
    stages {
        stage('Test1') {
            steps {
                sh 'pip install -r requirements.txt'
            }
        }
        
        stage('Test2') {
            steps {
                echo 'Stage 2'
                sh 'behave -f allure_behave.formatter:AllureFormatter -o allure-results features/scenarios/**/*.feature'
            }
        }
        
        stage('Test3') {
           steps {
                script {
                    allure([
                        includeProperties: false,
                        jdk: '',
                        properties: [],
                        reportBuildPolicy: 'ALWAYS',
                        results: [[path: 'allure-results']]
                    ])
                }
            }
        }
    }
    }
}

下图将向您展示我想要的正确流程。有什么办法吗?

// Pipeline project: SO-69680107-1-parallel-downstream-jobs-matrix
pipeline {
    agent any
    stages {
        stage('Clean Workspace') {
            steps {
                cleanWs()
            }
        }

        stage('Job matrix') {
            matrix {
                axes {
                    axis {
                        name 'job'
                        values 'SO-69680107-2', 'SO-69680107-3', 'SO-69680107-k' // , ...
                    }
                }
                stages {
                    stage('Run job') {
                        steps {
                            build "$job"
                            copyFiles( "$WORKSPACE\..\$job", "$WORKSPACE")
                        }
                    } // stage 'Run job'
                }
            } // matrix
        } // stage 'Job matrix'

        stage('List upstream workspace') {
            steps {
                bat "@dir /b \"$WORKSPACE\""
            }
        }
    } // stages
}

def copyFiles( downstreamWorkspace, upstreamWorkspace ) {
    dir("$downstreamWorkspace") {
        bat """
            @set prompt=$g$s
            @echo Begin: %time%
            dir /b
            xcopy /f *.* \"$upstreamWorkspace\\"
            @echo End: %time%
        """
    }
}

下游项目模板 SO-69680107-2SO-69680107-3SO-69680107-k:

// Pipeline project: SO-69680107-X
pipeline {
    agent any
    stages {
        stage('Stage X') {
            steps {
                sh 'set +x; echo "Step X" | tee SO-69680107-X.log; date; sleep 3; date'
            }
        }
    }
}