Wie überprüfe ich den Jenkins-Build-Status, ohne zum Browser zu wechseln?
Bei Bedarf kann ich mithilfe der JSON-API ein Skript erstellen. Ich habe mich jedoch gefragt, ob bereits so etwas eingebaut ist.
scripting
command-line-interface
jenkins
Catskul
quelle
quelle
Antworten:
Ich konnte kein eingebautes Werkzeug finden und habe eines erstellt:
quelle
Überprüfen Sie, ob ein Build ausgeführt wird oder nicht
Ich habe das Python-Skript in der Antwort auf diese Frage ausprobiert, konnte es aber nicht zum Laufen bringen. Ich kenne Python nicht und wollte keine Zeit in das Debuggen investieren, konnte aber genug von dem Skript lesen, um mich davon inspirieren zu lassen.
Ich muss nur überprüfen, ob ein Build ausgeführt wird oder nicht. Dazu habe ich Curl und Grep verwendet:
curl http://myjenkins/job/myjob/lastBuild/api/json | grep --color result\":null
result\":null
0 zurück.result\":null
den Wert 1 zurück.Nicht besonders elegant, aber es funktioniert gut genug für meine Bedürfnisse.
Ich habe zum Beispiel ein Bash-Skript, das einen Build startet und darauf wartet, dass dieser beendet wird:
Danke für die Inspiration, Catskul!
quelle
TypeError: cannot concatenate 'str' and 'NoneType' objects
. Ich kenne Python nicht, daher habe ich auf Shell umgestellt und Ihre Antwort als Inspiration eingegeben. Vielen Dank!Ein ehemaliger Kollege von mir hat https://github.com/txels/autojenkins geschrieben, das eine ganze Reihe von praktischen Funktionen und API-ähnlichen Dingen enthält, um mit einer Jenkins-Instanz von Python zu arbeiten ...
quelle
Eine andere Python-Lösung:
quelle
Sie können ein Groovy-Skript verwenden:
Über Jenkins-Cli
, wobei
=
Standard in bedeutet. Sie können sich mit--username <USER> --password <PASS>
oder mit authentifizieren-i <SSH-PRIVATE-KEY>
.Via Jenkins-Cli über SSH
quelle
Ich denke, ich habe einen einfacheren Weg gefunden. Wenn ich es richtig verstanden habe, möchten Sie das Ergebnis des Builds überprüfen - mit anderen Worten, ob es ein Erfolg oder ein Misserfolg war.
Der Befehl "build" von Jenkins CLI ändert den Exit-Code abhängig vom Ergebnis des Builds, solange Sie die Option
-s
oder-f
am Ende verwenden.Zum Beispiel,
oder
Beachten Sie, dass die Option am Ende steht. Es ist nicht die erste
-s
, mit der die URL der Jenkins-Instanz definiert wird.Und um das Ergebnis zu erhalten, können Sie Folgendes verwenden
$?
:Wenn das Ergebnis 0 ist, war es ein Erfolg. Wenn es etwas anderes als 0 ist, war es ein Fehler.
Referenz: Ich kann nicht eine öffentliche Jenkins Instanz finden, die den Zugriff auf diese Seite gibt, aber es kann in Ihrem lokalen Jenkins Instanz zu finden:
http://<url of Jenkins Instance>/cli/command/build
. Es erklärt auch den Unterschied zwischen-s
und-f
:quelle
Sie können den symbolischen Deskriptor verwenden
lastBuild
:Das
result
Element in der Antwort enthält eine Zeichenfolge, die das Ergebnis des Builds beschreibt.quelle
Glücklicherweise gibt es eine Jenkins-Cli , mit der Sie einige Informationen von Jenkins erhalten können. Leider können Sie den Status eines Builds nicht über die CLI abrufen. Dies bedeutet, dass Ihre Lösung für die Verwendung der JSON-API nicht nur korrekt ist, sondern auch die einzige programmgesteuerte Methode.
Auch wenn es so aussieht, als würde
get-job
es tun, was Sie wollen, gibt es tatsächlich nicht das Ergebnis zurück - es gibt nur die Auftragskonfiguration zurück.quelle
Ein weiteres Skript für CMD (Windows):
quelle
Sie können damit versuchen,
quelle