Aktualizacja:
W other answer dodano ~ 8 miesięcy po kopalni. Nie zdawałem sobie wtedy sprawy z nagłówka lokalizacji w odpowiedzi. W niektórych przypadkach brzmi to jak dobry wybór. To powiedziawszy, opierając się na zastrzeżeniach w odpowiedzi i komentarzach (szczególnie w przypadku kompilacji sparametryzowanych), wydaje się, że ta odpowiedź nadal ma pewne zastosowanie w niektórych przypadkach.
Oryginalny odpowiedź:
Niestety, nie robią to tak proste, jak mogłoby być. to znaczy, na przykład, zwracając odpowiedź z odpowiedzią taką jak id.
Uważam jednak, stały, choć z pewnością nietrywialne, obejście, które byłoby wykorzystać przyczyna parametr w adresie URL użyć do uruchomienia kompilacji, a wewnątrz tej przyczyny, dodać unikalny tekst że możesz później parsować, aby ustalić, czy uruchomiłeś go ze swojej automatyzacji.
Aby dodatkowo uniqueify konkretną pracę, w przypadku wielokrotności są uruchomione w tym samym czasie, nawet z automatyzacji, również zawierać unikatowy identyfikator jakiegoś typu (może to być po prostu sekwencja ID z RDBMS lub podobne) wewnątrz parametru przyczyny.
Następnie można użyć JSON API, aby uzyskać informacje na temat pracy jesteś zdalnie wyzwalającego. Ponownie, jest to nieco pośredni, ale wykonalne:
Hit URL w postaci:
http://<server>:<port>/job/<jobname>/lastBuild/api/json
Możesz dodać ?pretty=true
do całkiem-print go w przeglądarce dla lepszej czytelności ludzkiej.
Dostaniesz JSON z ostatniej kompilacji.Będzie ona zawierać przyczyn atrybut wewnątrz actions atrybutu, a tam (w innym zagnieżdżonego atrybutu o nazwie shortDescription) można znaleźć parametr przyczyną dodaną, jeśli ten był jednym z buduje pan wywołał.
Można przeanalizować zarówno specjalny tekst statyczny, jak i wygenerowany identyfikator, aby sprawdzić, czy pasują do siebie. Jeśli tak, można również uzyskać identyfikator Jenkins id również z JSON (numer wersji buildNumber, który jest zagnieżdżony).
Jeśli ta kompilacja nie została w ogóle uruchomiona przez twoją automatyzację lub była, ale identyfikator nie pasuje, możesz powtórzyć proces dla N - 1 build, dopóki nie znajdziesz tego, czego szukasz .
To JSON byłby formularza:
http://<server>:<port>/job/<jobname>/<buildNumber>/api/json
Czy możesz wyjaśnić, jak dodać parametr 'cause'? Szukałem dokumentacji Jenkinsa i nie mogłem znaleźć żadnego odniesienia do tego parametru. – Muxa
Jest to parametr określony w adresie URL używanym do uruchomienia kompilacji za pośrednictwem * curl * lub podobnego. na przykład dodaj parametr 'cause = foo_100' do adresu URL. – khampson
Świetna odpowiedź! Istnieje potencjalny warunek wyścigowy, w którym wyzwalane wykonywanie zadań jest nadal w kolejce podczas przeszukiwania historii kompilacji dla unikalnego identyfikatora. Można tego uniknąć, używając lokalizacji uwzględnionej w utworzonej odpowiedzi 201 i zasadniczo czekając na jej opuszczenie kolejki. – jpadams