2017-05-11 4 views
1

Ich schreibe einige groovy Hilfsmethoden für meine Jenkins-Pipeline-Jobs. Eine meiner Methoden soll mit und ohne einem zugeordneten Knoten aufgerufen werden, wie folgt aus:Wie überprüft man, ob ein Knoten() bereits vergeben ist

myMethod() // Call outside of the node (no node allocated yet) 
node("...") { 
    myMethod() // Call within the node 
} 

nun die Methode, die ich überprüfen implementieren, wenn ich zur Zeit in einem Knoten bin, und wenn nicht, zuteilen ein, so

def myMethod() { 
    if (-->isNodeAllocated()<--) { 
     // Do the stuff 
    } else { 
     node() { 
      // Do the same stuff 
     } 
    } 
} 

So, wie man diese Art von Prüfung durchführt?

+2

Ich erinnere mich, einen Versuch/Fang Weg in einigen geteilten Bibliothek gesehen (vielleicht fabric8?). Zuerst versuchen Sie auszuführen, ohne einen Knoten zuzuweisen. Wenn es fehlschlägt, wickeln Sie den Schritt in einen 'Knoten'. – StephenKing

Antwort

0

Jenkins legt eine Umgebungsvariable namens NODE_NAME fest, wenn Sie sich in einem Knoten befinden. Versuchen Sie dies:

if (env.NODE_NAME) { 
    // Do stuff 
} else { 
    node ('yournode') { 
     // Do stuff 
    } 
} 
+0

Funktioniert es auch in Multi-Job-Fällen mit 'parallel'? Ist die Variable 'env' nicht global für alle Blöcke, die parallel ausgeführt werden? –

Verwandte Themen