Um die weitere Ausführung zu stoppen, wenn Befehl schlägt fehl:
command || exit 0
Um die Ausführung fortzusetzen, wenn Befehl schlägt fehl:
command || true
Jenkins führt Shell-Build-Schritte mit /bin/sh -xe
aus standardmäßig. -x
bedeutet, jeden ausgeführten Befehl zu drucken. -e
bedeutet, mit einem Fehler zu beenden, wenn einer der Befehle im Skript fehlgeschlagen ist.
Ich denke also, was in Ihrem Fall passiert ist, ist Ihr Git-Befehl exit mit 1 und wegen des Standardwerts -e
param übernimmt die Shell den Exit-Code ungleich 0, ignoriert den Rest des Skripts und markiert den Schritt als Fehler. Wir können dies bestätigen, wenn Sie Ihr Build-Step-Skript hier posten können.
Wenn das der Fall ist, können Sie versuchen, #!/bin/sh
einzugeben damit das Skript ohne Option ausgeführt wird; oder machen Sie einen set +e
oder irgendetwas Ähnliches zusätzlich zum Erstellungsschritt, um dieses Verhalten zu überschreiben.
Bearbeitet:Eine weitere zu beachtende Sache ist, dass, wenn der letzte Befehl in Ihrem Shell-Skript gibt Nicht-0-Code zurück , wird der gesamte Build-Schritt auch bei diesem Setup weiterhin als fehlgeschlagen markiert. In diesem Fall können Sie einfach einen true
eingeben Befehl am Ende, um das zu vermeiden.
Eine andere verwandte Frage
Wenn es nichts zu pushen gibt, gibt git den Exit-Status 1 zurück. Shell-Build-Schritt ausführen wird entsprechend als fehlgeschlagen markiert. Sie können die ODER-Anweisung || verwenden (Doppelrohr).
git commit -m 'some messasge' || echo 'Commit failed. There is probably nothing to commit.'
Das heißt, zweites Argument ausführen, wenn das erste fehlgeschlagen ist (zurückgegebener Exit-Status> 0). Der zweite Befehl gibt immer 0 zurück. Wenn es nichts zu pushen gibt (Status 1 beenden -> zweiten Befehl ausführen), gibt Echo 0 zurück und der Bauschritt wird fortgesetzt.
Um den Build als instabil zu markieren, können Sie den Post-Build-Schritt Jenkins Text Finder verwenden. Es kann die Konsolenausgabe durchlaufen, das Muster (Ihr Echo) abgleichen und den Build als instabil markieren.