У меня есть конвейер, который запускает виртуальные машины и запускает на них несколько тестов.Для параметров я использую две строки: одну для указания списка тестовых случаев или операций управления ВМ, а другую для списка имен узлов.В настоящее время конвейер выполняется сначала на одном узле, а затем на следующем.Мне нужно, чтобы он выполнялся на всех узлах одновременно.Я попытался использовать параллель, и он не может сосуществовать с циклами 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)];
}
}