Wenn ich einen Execute shell
Build-Schritt zum Ausführen eines Skripts ausführe und das Skript 0
zurückgibt, kennzeichnet Jenkins
den Build als SUCCESS
, ansonsten wird es als FAILURE
gekennzeichnet, was das erwartete Standardverhalten als ist 0
bedeutet keine Fehler und jeder andere Wert stellt einen Fehler dar.
Gibt es eine Möglichkeit, ein Build als SUCCESS
nur dann zu markieren, wenn der Rückgabewert mit einem anderen Wert als 0
übereinstimmt (zB 1
, 2
, 3
...)?
PS: Falls Sie sich fragen, warum ich danach suche, kann ich Jenkins selbst testen, da meine Skripte unterschiedliche Ausgangswerte in Abhängigkeit verschiedener Faktoren liefern Ich erwarte von bestimmten Setup-Fehlern bestimmte Werte und stelle sicher, dass meine gesamte Jenkins-Integration diese aufgreift.
Gut, ich ging auf IRC #jenkins
und niemandem neu über ein Plugin, um einen bestimmten Job-Status abhängig von einem bestimmten Exit-Code einzustellen :( Ich schaffte es, was ich wollte, indem ich einen Execute shell
-Schritt mit dem erstellen folgender Inhalt:
- Das Ausführen des Skripts unter bash -c
ermöglicht das Abfangen des Exit-Codes und verhindert, dass Jenkins
die Build-Ausführung stoppt, wenn der Exit-Code anders als 0 ist (was normalerweise der Fall ist).
- $?
wird nach der Ausführung des Skripts als $?
interpretiert und stellt seinen Beendigungscode dar.
- $EXPECTED_EXIT_CODE
ist einer meiner Job-Parameter, der den Exit-Code definiert, den ich erwarte.
-Die if
-Anweisung führt einfach Folgendes aus: Wenn ich den erwarteten Exit-Code erhalte, beende ich mit 0, so dass der Build als SUCCESS
markiert wird, andernfalls mit 1, damit der Build als FAILURE
markiert wird. .
Ich würde fortfahren anstelle von exit 0 verwenden, falls Sie andere Elemente darunter haben, die Sie durchlaufen müssen.
Erstellen Sie einen Wrapper für Ihr Shell-Skript. Lassen Sie diesen Wrapper Ihre Tests ausführen und stellen Sie dann den Resturn-Wert nach beliebigen Kriterien ein.
Kann mit dem Textfinder-Plugin :
Failed on XXX - Exiting with RC 2
Exiting with RC [2-4]
. Ich mache es so:
%Vor% Hier ist +e
, um das Standardverhalten von Jenkins zu vermeiden, um FAILURE bei Niesen während der Skriptausführung zu melden. Dann komm zurück mit -e
.
Damit Sie Ihren Exit-Code entsprechend behandeln können, andernfalls FAIL mit dem zurückgegebenen Code.
Tags und Links unit-testing jenkins continuous-integration hudson