In einem Projekt, an dem ich arbeite, verwenden wir Shell-Skripte, um verschiedene Aufgaben auszuführen. Einige sind sh / bash-Skripte, die rsync ausführen, andere sind PHP-Skripte. Eines der PHP-Skripte führt einige Integrationstests aus, die in JUnit XML, Code Coverage-Berichten und ähnlichem ausgegeben werden.
Jenkins kann die Jobs basierend auf dem Exit-Status als erfolgreich / fehlgeschlagen markieren . In PHP wird das Skript mit 1 beendet, wenn festgestellt wurde, dass die Tests während des Laufs fehlgeschlagen sind. Die anderen Shell-Skripte führen Befehle aus und verwenden die Exit-Codes von diesen, um einen Build als fehlgeschlagen zu markieren.
// :: End of PHP script:
// If any tests have failed, fail the build
if ($build_error) exit(1);
In der Jenkins-Terminologie wird ein instabiler Build wie folgt definiert:
Ein Build ist instabil, wenn er erfolgreich erstellt wurde und ein oder mehrere Publisher ihn als instabil melden. Wenn beispielsweise der JUnit-Publisher konfiguriert ist und ein Test fehlschlägt, wird der Build als instabil markiert.
Wie kann ich Jenkins dazu bringen, einen Build als instabil zu markieren, anstatt nur Erfolg / Misserfolg beim Ausführen von Shell-Skripten?