Testing 如何使用Jenkins管道在多个节点上运行同一组作业

Testing 如何使用Jenkins管道在多个节点上运行同一组作业,testing,jenkins,parallel-processing,jenkins-pipeline,Testing,Jenkins,Parallel Processing,Jenkins Pipeline,我有一个管道正在启动虚拟机并对其运行一些测试。对于参数,我使用两个字符串:一个表示测试用例或VM管理操作的列表,另一个表示节点名称的列表。 目前,管道首先在一个节点上执行,然后在下一个节点上执行。我需要它们同时在所有节点上执行。 我尝试使用并行,但它不能和for循环共存。 这是我的剧本: nodes = params._RNX_OS.split('¤'); for (String VMnode : nodes) { stage("Prepare environment"){ build

我有一个管道正在启动虚拟机并对其运行一些测试。对于参数,我使用两个字符串:一个表示测试用例或VM管理操作的列表,另一个表示节点名称的列表。 目前,管道首先在一个节点上执行,然后在下一个节点上执行。我需要它们同时在所有节点上执行。 我尝试使用并行,但它不能和for循环共存。 这是我的剧本:

nodes = params._RNX_OS.split('¤');
for (String VMnode : nodes) {

stage("Prepare environment"){
    build job: "TA_StartVM", parameters: [string(name: "_RNX_OS", value: VMnode), string (name:"_RNX_SNAPSHOT", value:"Configured")];
}

configs = params._RNX_STAGES.toString().split('¤');
for (String config : configs) {
    switch (config) {
        case "Restart":
            stage("Restart VM"){
            build job: 'TA_RestartVM', parameters: [string(name: "_RNX_OS", value: VMnode)];
            }
            break
        case ~/.*Start.*/:
                param = config.toString().split(':');
                snapshot = param[1];
            stage("Start VM"){
            build job: 'TA_StartVM', parameters: [string(name: "_RNX_OS", value: VMnode), string (name:"_RNX_SNAPSHOT", value: snapshot)];
            }
            break
         case "Shutdown":
            stage("Shut down VM"){
            build job: 'TA_ShutdownVM', parameters: [string(name: "_RNX_OS", value: VMnode)];
            }
            break
         case ~/.*Save.*/:
              param = config.toString().split(':');
                snapshot = param[1]
            stage("Save VM Snapshot"){
            build job: 'TA_SaveVMSnapshot', parameters: [string(name: "_RNX_OS", value: VMnode), string (name:"_RNX_SNAPSHOT", value: snapshot)];
            }
            break
        default:
        stage("Run " +config + " Test"){
            build job: 'TA_RunTest', parameters: [[$class: 'LabelParameterValue', name: 'node', label: VMnode], string(name: "_RNX_TESTCONF", value: config), string(name: "_RNX_OS", value: VMnode)], propagate: false;
        }
        break 
    }
}

stage("Test Results Table"){
        build job: 'TA_TestResultsTable',parameters: [[$class: 'LabelParameterValue', name: 'node', label: VMnode]], propagate: false;
}

stage("Publish Test Results"){
    build job: 'TA_CopyTestResults', propagate: false;
}
stage("Stop Slave"){
    build job: "TA_ShutdownVM", parameters: [string(name: "_RNX_OS", value: VMnode)];
}
}
我解决了! 发现了这组非常好的示例: 我使用的是并行多节点