Jak sprawdzić stan kompilacji Jenkins bez przełączania się do przeglądarki?
W razie potrzeby mogę utworzyć skrypt za pomocą interfejsu API JSON, ale zastanawiałem się, czy jest już coś takiego wbudowanego.
scripting
command-line-interface
jenkins
Catskul
źródło
źródło
Odpowiedzi:
Nie mogłem znaleźć wbudowanego narzędzia, więc zrobiłem jedno:
źródło
Sprawdź, czy kompilacja działa, czy nie
Wypróbowałem skrypt Python w odpowiedzi na to pytanie, ale nie mogłem go uruchomić. Nie znam Pythona i nie chciałem inwestować czasu w debugowanie, ale byłem w stanie przeczytać wystarczająco dużo skryptu, aby czerpać z niego inspirację.
Wszystko, co muszę zrobić, to sprawdzić, czy kompilacja działa. Aby to zrobić, użyłem curl i grep, jak poniżej:
curl http://myjenkins/job/myjob/lastBuild/api/json | grep --color result\":null
result\":null
zwróci 0.result\":null
zwróci 1.Niezbyt elegancki, ale działa wystarczająco dobrze dla moich potrzeb.
Na przykład mam skrypt Bash, który rozpoczyna kompilację, a następnie czeka na zakończenie:
Dzięki za inspirację, Catskul!
źródło
TypeError: cannot concatenate 'str' and 'NoneType' objects
. Nie znam Pythona, więc przerzuciłem się na używanie powłoki i dałem +1 twojej odpowiedzi za inspirację. Dzięki!Mój były kolega napisał https://github.com/txels/autojenkins, który ma całą masę wygodnych funkcji i rzeczy typu API wokół pracy z instancją Jenkins z Pythona ...
źródło
Inne rozwiązanie Python:
źródło
Możesz użyć skryptu Groovy:
Via jenkins-cli
, gdzie
=
oznacza standardowe wejście. Możesz uwierzytelnić się za pomocą--username <USER> --password <PASS>
lub za pomocą-i <SSH-PRIVATE-KEY>
.Przez jenkins-cli przez SSH
źródło
Myślę, że znalazłem łatwiejszy sposób. Jeśli dobrze zrozumiałem, chcesz sprawdzić wynik kompilacji - innymi słowy, jeśli był to sukces lub porażka.
Polecenie „build” Jenkins CLI zmienia kod wyjścia w zależności od wyniku kompilacji, o ile na końcu używasz opcji
-s
lub-f
.Na przykład,
lub
Zauważ, że opcja idzie na końcu; nie jest to pierwszy
-s
, który służy do definiowania adresu URL instancji Jenkins.A następnie, aby uzyskać wynik, możesz użyć
$?
:Jeśli wynik wynosi 0, był to sukces. Jeśli jest to coś innego niż 0, to była awaria.
Referencje: Nie mogę znaleźć publiczne wystąpienie Jenkins, który daje dostęp do tej strony, ale można je znaleźć w lokalnej instancji Jenkins:
http://<url of Jenkins Instance>/cli/command/build
. To również wyjaśnia różnicę między-s
i-f
:źródło
Możesz użyć symbolicznego deskryptora
lastBuild
:result
Element odpowiedzi zawiera ciąg opisujący wynik kompilacji.źródło
Na szczęście istnieje jenkins-cli , za pomocą którego można uzyskać informacje od Jenkinsa. Niestety nie można odzyskać statusu kompilacji za pomocą interfejsu CLI - co oznacza, że rozwiązanie polegające na użyciu interfejsu API JSON jest nie tylko poprawne - jest to jedyny programowy sposób.
Ponadto, chociaż wygląda na to, że
get-job
może zrobić to, co chcesz, w rzeczywistości nie zwraca wyniku - zwraca jedynie konfigurację zadania.źródło
Kolejny skrypt dla CMD (Windows):
źródło
Możesz spróbować z tym
źródło