Ziel
Führen Sie mehrere Stufen einer deklarativen Jenkins-Pipeline auf demselben Knoten aus.
Einrichtung
Dies ist nur ein minimales Beispiel, um das Problem zu zeigen. Es gibt zwei Windows-Knoten "windows-slave1" und "windows-slave2", die beide mit dem Label "windows" gekennzeichnet sind.
HINWEIS: Meine echte Jenkins-Datei kann keinen globalen Agenten verwenden, da es Gruppen von Stufen gibt, die auf verschiedenen Knoten ausgeführt werden müssen (z. B. Windows vs. Linux).
Erwartetes Verhalten
Jenkins wählt einen der Knoten in "Stage 1" basierend auf dem Label aus und verwendet den gleichen Knoten in "Stage 2", da die Variable windowsNode auf den in "Stage 1" ausgewählten Knoten aktualisiert wurde. p>
Tatsächliches Verhalten
"Stage 2" läuft manchmal auf demselben und manchmal auf einem anderen Knoten als "Stage 1". Siehe die Ausgabe unten.
Jenkinsfile
%Vor%Ausgabe
%Vor%Irgendwelche Ideen, was mit dem Setup nicht stimmt? Ich denke, so wird die Jenkins-Datei analysiert und ausgeführt.
Andere Vorschläge? Vielleicht gibt es eine Jenkins-API, um einen Knoten basierend auf der Bezeichnung "windows" auszuwählen, wenn Sie windowsNode zu Beginn festlegen.
Sie könnten Stufen innerhalb eines Skriptblocks definieren. Diese Stufen sind eine Art von Unterstufen einer Elternstufe, die in einem gegebenen Agenten läuft. Das war der Ansatz, den ich in einem ähnlichen Anwendungsfall verwenden musste.
%Vor%Ich habe festgestellt, dass dies so funktioniert, wie Sie es erwarten würden
%Vor%Tags und Links jenkins jenkins-pipeline