我有一个启动虚拟机并对它们运行一些测试的管道。对于参数,我使用两个字符串:一个用于指示测试用例列表或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)];
}
}