Ich habe eine Reihe von virtuellen Maschinen zum Testen meiner Build-Ergebnisse. Alle VMs sind als Jenkins-Slave-Knoten konfiguriert. Der Master-Knoten kann die VMs starten und stoppen.So erhalten Sie Knotennamen aus Beschriftungen in einem Jenkins-Pipeline-Skript
Die VMs werden in Gruppen von drei (cluster1
, cluster2
) markiert und mit unterschiedlichen Rollen (role1
, role2
, role3
).
Ich möchte ein Pipeline-Skript schreiben, die einen Gruppennamen als Argument (StringParameterValue) und
- die VMs starten, die
- Lauf Einzeltests auf jedem Knoten zu der Gruppe gehören (in parallel)
- stoppen Sie die VMs nach Abschluss.
Die Pipeline Skript sieht etwa wie:
def VM1 = ??? get name of the node labeled ("GROUP && role1") ???;
def VM2 = ??? get name of the node labeled ("GROUP && role2") ???;
def VM3 = ??? get name of the node labeled ("GROUP && role3") ???;
def VMs = [VM1, VM2, VM3];
node (master) {
stage 'Start'
def start = [:];
for (vm in VMs) {
start["${vm}"] = {
build job: 'Start_VM', parameters: [
[$class: 'StringParameterValue', name: 'VMNAME', value: vm]];
}
}
parallel start;
def tests = [:];
for (int i = 0; i < VMs.size; i++) {
tests["role${i}"] = {
node (VMs[i]) {
build job: "Test_role${i}";
}
}
}
parallel tests;
Stage 'Stop'
def stop = [:];
for (vm in VMs) {
stop["${vm}"] = {
build job: 'Stop_VM', parameters: [
[$class: 'StringParameterValue', name: 'VMNAME', value: vm]];
}
}
parallel stop;
}
F: Wie kann ich die einzelnen Knotennamen durch die Gruppenbezeichnung ableiten?
Wo 'lcluster' kommen aus? –
Uups - es ist eigentlich ein Tippfehler. Sollte 'Lgroup' sein. –