Testing 如何使用Jenkins管道在多个节点上运行同一组作业
我有一个管道正在启动虚拟机并对其运行一些测试。对于参数,我使用两个字符串:一个表示测试用例或VM管理操作的列表,另一个表示节点名称的列表。 目前,管道首先在一个节点上执行,然后在下一个节点上执行。我需要它们同时在所有节点上执行。 我尝试使用并行,但它不能和for循环共存。 这是我的剧本: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
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)];
}
}
我解决了!
发现了这组非常好的示例:
我使用的是并行多节点