Wie man einen Build in Jenkins als instabil markiert, wenn Shell-Skripte ausgeführt werden
In einem Projekt an dem ich arbeite sind wir mit shell-Skripts zum ausführen von verschiedenen Aufgaben. Einige Skripte sind als SH/Bash benutzen, dass läuft Rsync und einige PHP-Skripte. Einer der PHP-Skripte ausgeführt werden, einige Integrationstests, die Ausgabe zu JUnit XML, code-coverage-reports und ähnliches.
Jenkins sind in der Lage, markieren Sie die Arbeitsplätze, die als erfolgreich /fehlgeschlagen basiert exit-status. In PHP wird das Skript beendet mit 1wenn er erkannt hat, dass fehlgeschlagene tests während der Ausführung. Die andere shell-scripts Befehle ausgeführt werden und verwendet das exit-codes von denjenigen, daneben ein build als fehlgeschlagen.
// :: End of PHP script:
// If any tests have failed, fail the build
if ($build_error) exit(1);
In der Jenkins Terminologie eine unstable build ist definiert als
Ein build ist instabil, wenn es gebaut wurde und erfolgreich eine oder mehrere Publisher-Bericht wird es instabil. Zum Beispiel, wenn die JUnit-Verleger konfiguriert ist und ein test fehlschlägt, dann wird der build gekennzeichnet werden instabil.
Wie kann ich Jenkins, daneben ein build als instabil, anstatt nur Erfolg /Fehler beim ausführen von shell-Skripten?
InformationsquelleAutor der Frage HNygard | 2011-11-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie die Text-finder plugin.
Statt beenden mit dem status 1 (was Versagen würde bauen), do:
Als in den post-build-Aktionen aktivieren Sie das Text-Finder, legen Sie den regulären Ausdruck, die Botschaft, die Sie gedruckt (
TESTS FAILED!
) und überprüfen Sie die "Unstable" wenn gefunden" Kontrollkästchen unter diesem Eintrag.InformationsquelleAutor der Antwort Jan Hudec
Es getan werden kann, ohne Druck von magischen Zeichenfolgen und mit TextFinder. Hier einige Informationen über Sie.
Grundsätzlich benötigen Sie einen .jar-Datei von http://yourserver.com/cli verfügbar in shell-Skripten, dann können Sie den folgenden Befehl verwenden, um zu markieren eine bauen instabil:
Markieren build unstable auf Fehler, die Sie verwenden können:
Das problem ist, dass jenkins-cli.jar werden erhältlich von shell-Skript. Sie können entweder steckte es in easy-to-access-Pfad, oder download via job - shell-Skript:
InformationsquelleAutor der Antwort binaryLV
sollten Sie auch in der Lage sein zu verwenden, groovig und tun, was textfinder hat
markieren eines zu bauen, wie un-stabil mit groovigem post-build-plugin
Siehe auch Groovy Postbuild-Plugin
InformationsquelleAutor der Antwort Kalpesh Soni
In meinem job-Skript, ich habe die folgenden Aussagen (diesen job nur ausgeführt wird, auf dem Jenkins master):
Können Sie sehen, dieses und viel mehr Informationen über die Einstellung des build-Status auf der Jenkins-wiki: https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+CLI
InformationsquelleAutor der Antwort Steve HHH
Konfigurieren, PHP-build zu erzeugen xml junit-report
Fertig build-script mit status 0
Add post-build action Publish JUnit test result report für Test-Bericht XML-Dateien. Dieses plugin ändert Stabilen build zu Instabil beim test Versagen.
Hinzufügen Jenkins Text Finder - plugin mit Ausgabe in der Konsole Scannen und deaktiviert die Optionen. Dieses plugin fail ganze baut auf fatal error.
InformationsquelleAutor der Antwort MariuszS
Sollten Sie verwenden Jenkinsfile zu wickeln Sie Ihre build-Skript und markieren Sie einfach die aktuelle build als INSTABIL mithilfe
currentBuild.result = "UNSTABLE"
.InformationsquelleAutor der Antwort poussma
Ich finde die flexibelste Art und Weise, dies zu tun ist durch das Lesen einer Datei, in der groovy-post-build plugin.
Wenn der Inhalt der Datei 'true' wird der build gesetzt werden zu instabil. Dies funktioniert auf dem lokalen master und an alle slaves führen Sie den job auf, und für jede Art von Scripte schreiben können auf die Festplatte.
InformationsquelleAutor der Antwort jeremyjjbrown
Moderne Jenkins Versionen gelöst: es ist nur eine erweiterte option für den Task-shell-build-Schritt!
Können Sie nur wählen, und setzen Sie einen beliebigen exit-Wert; wenn es passt, wird der build instabil sein. Wählen Sie einfach einen Wert, der kaum ins Leben gerufen, durch einen realen Prozess in deinem build.
InformationsquelleAutor der Antwort Alan Franzoni
Als leichtere alternative zu den vorhandenen Antworten, können Sie den build-Ergebnis mit einem einfachen HTTP POST für den Zugriff auf die Groovy-console-REST-API:
Vorteile:
Für diese Lösung, muss die Umgebung die folgenden Bedingungen erfüllen:
InformationsquelleAutor der Antwort Alex O
Den TextFinder ist nur gut, wenn der job-status noch nicht geändert wurde, von ERFOLG zu AUSGEFALLEN oder ABGEBROCHEN.
Verwenden Sie in solchen Fällen ein groovy-Skript in das PostBuild step:
Sehen Sie mehr details in einem post habe ich darüber geschrieben:
http://www.tikalk.com/devops/JenkinsJobStatusChange/
InformationsquelleAutor der Antwort yorammi
Duplizieren meine Antwort aus hierweil ich verbrachte einige Zeit auf der Suche nach:
Dies ist jetzt möglich, in neueren Versionen von Jenkins, die Sie tun können, so etwas wie dieses:
Der Pipeline Syntax-generator zeigt Sie dies in der Registerkarte "erweitert":
InformationsquelleAutor der Antwort gib
Ich dachte, ich würde nach einer anderen Antwort für Menschen, die vielleicht für etwas ähnliches suchen.
In unserem build-job-wir haben Fälle, wo wir würden wollen, dass das bauen weiter, aber als solche gekennzeichnet werden instabil. Für uns ist es in Bezug auf die Versionsnummern.
So, ich wollte, um eine Bedingung für das bauen und den build zu instabil, wenn die Bedingung erfüllt wird.
Benutzte ich die Bedingten Schritt (single) option als build-Schritt.
Dann habe ich Ausführen system Groovy-Skript als build-Schritt, der ausgeführt würde, wenn die Bedingung erfüllt wird.
Ich verwendet Groovy Befehl und legen Sie das Skript die folgenden
Scheint ganz gut zu funktionieren.
Stieß ich auf die Lösung hier
http://tech.akom.net/archives/112-Marking-Jenkins-build-UNSTABLE-from-environment-inject-groovy-script.html
InformationsquelleAutor der Antwort adpro
Wenn shell endete mit fehlgeschlagenen Befehl, dass alle OK (build failed:)
Im Falle einer fehlgeschlagenen Befehl innerhalb shell-Skript tun, das überprüfen nach dem Befehl:
Korrektur von @zrajm: es vereinfacht werden könnte, um
InformationsquelleAutor der Antwort GKislin
Können Sie rufen Sie einfach "exit 1", und der build wird scheitern an diesem Punkt und nicht weiter. Ich Wunde macht eine passthrough-Funktion machen es zu handhaben für mich, und rufen Sie safemake statt für Gebäude:
InformationsquelleAutor der Antwort jessebs