Wie mark Jenkins-builds ERFOLG nur auf bestimmte Fehler in exit-Werte (ungleich 0)?
Wenn ich ein Execute shell
build-Schritt, um ein Skript auszuführen und das Skript gibt 0
, Jenkins
flags das bauen als SUCCESS
, ansonsten kennzeichnet es als FAILURE
dies ist das erwartete Verhalten, wie 0
bedeutet, dass keine Fehler und jeder andere Wert stellt einen Fehler.
Gibt es eine Möglichkeit, daneben ein build als SUCCESS
nur, wenn der return-Wert entspricht einem bestimmten anderen Wert als 0
(z.B. 1
,2
,3
...)?
PS: falls Ihr Euch wundert, warum ich bin auf der Suche, das mir erlauben wird, führen unit-Tests von Jenkins selbst als meine Skripte sind so geschrieben, zurück, andere exit-Werte in Abhängigkeit von verschiedenen Faktoren, so erlauben Sie mir, zu erwarten, dass bestimmte Werte in Abhängigkeit von bestimmten setup-Fehler und sicherstellen, dass meine ganze Jenkins integration greift diese.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Alle Recht, ich ging auf
IRC #jenkins
und niemand neues über ein plugin eine bestimmte job-status abhängig von einem bestimmten exit-code 🙁 habe ich es geschafft, zu tun, was ich wollte durch die Schaffung einesExecute shell
Schritt mit folgendem Inhalt:Läuft das Skript unter
bash -c
ermöglicht den Fang der exit-code und verhindert, dassJenkins
vom Stopp der build-Ausführung bei der, der exit-code ist anders als 0 ist (was es normalerweise tut).-
\$?
wird interpretiert als$?
nach der Skript-Ausführung und stellt dessen exit-code.-
$EXPECTED_EXIT_CODE
ist einer meiner job-Parameter bestimmt, welchen Exitcode ich erwarte.-Die
if
Aussage macht einfach das folgende: wenn ich die erwarteten exit-code beenden mit 0, so dass das bauen ist gekennzeichnetSUCCESS
, sonst beenden Sie mit 1, so dass das bauen ist gekennzeichnetFAILURE
./path/to/myscript.sh; if [ "$?" == "$EXPECTED_EXIT_CODE" ]; then exit 0; else exit 1; fi
(kann sogar ersetzen Sie das ';'s, mit neuen Linien, wie in jeder anderen shell-Skript).Execute shell
Schritt ausgeführt wird, mit der-e
Schalter von Jenkins erzählt, die den bash-interpreter zu stoppen beim ersten Fehler.Is there a way to prevent jenkins from usign -e?
Execute shell
block. Ich bin mit linuxIch würde Sie weiter, anstatt exit 0 in Fall müssen Sie andere Gegenstände unter, die Sie brauchen, zu Durchlaufen.
Umgehen kann man es über die Text-finder Plugin:
Failed on XXX - Exiting with RC 2
zum Beispiel, wenn Sie sich entscheiden, RC 2, 3 und 4 Kennzeichnen sollte der Bau als 'Unstable', suchen Sie nach text in diesem Muster:
Exiting with RC [2-4]
.SUCCESS
, den Punkt zu erstellen, die mehrere jobs haben, in bekannten fehlerhaften Bedingungen und stellen Sie sicher, dass die Skripte, berichten dieser Fehler, und wenn Sie es tun, sollten Erfolg). Ich wünschte nur, es war ein ähnliches plugin, das würde inspizieren Sie den Rückgabe-code anstelle der Ausgabe, da ich irgendwie Vertrauen der return-code mehr, aber wenn ich es nicht finden dieText-finder
plugin wird den trick tun. Vielen Dank."The search is always performed, even on builds which returned a non-zero exit status, but the reclassification only applies to builds which returned an overall exit status of zero"
was bedeutet, dass ich Kraft meiner Skripte nicht auf 0 zurück, auch bei Ausfall für dieses plugin zu arbeiten 🙁 was ich natürlich nicht will, da diese Skripte werden verwendet für die Produktion Arbeitsplätze und muss wieder die richtige exit-codes.Erstellen einen wrapper für die shell-Skript. Müssen die wrapper Ihre tests ausführen, und legen Sie dann die resturn Wert nach, um was auch immer Kriterien, die Sie wollen.
Ich es so machen:
Hier
+e
ist, um Standard zu vermeiden Jenkins Verhalten zu melden, SCHEITERN alle niesen während Ihrer Skript-Ausführung. Dann wieder mit-e
.So, dass Sie behandeln können Sie Ihren exit-code als angemessen, sonst schließlich nicht mit den zurückgegebenen code.
Wenn robocopy exit-code ist weniger als oder gleich 2 ist, dann wird es beende sich erfolgreich.
Robocopy Exit-Codes: