2016-01-21 16 views
9

Mam potok budujący Jenkins stworzony przy użyciu wtyczki workflow. Na początku rurociąg biegnie kompilacji haustem wewnątrz pojemnika Döcker a następnie archiwizuje wyniki badań, przy użyciu następującego koduZatrzymaj potok, gdy scena jest niestabilna.

step([$class: 'JUnitResultArchiver', testResults: 'build/test-results/*.xml']) 

W kolejnych krokach Pakuję się artefakty i wysłać je do repozytorium binarnego.

Gdy testy jednostkowe nie przechodzą, Jenkins rozumie, że kompozycja jest niestabilna i zaznacza ją na żółto. Jednak nadal trwa wraz z kolejnymi etapami w przygotowaniu. Czy istnieje jakiś sposób, aby rurociąg zatrzymał się, gdy testy jednostkowe zawiodły?

+0

Jak dzwonisz Gradle? Używając kroku "sh"? – amuniz

+0

Ups, moje złe. Niepowodzenie potoku to budowanie z przodu za pomocą Gulp/node. Jest uruchamiany przez sh w kontenerze dokowania. Stopień budowania backendu poprawnie obsługuje tę sytuację. – Vlad

+0

Ok. Potem nie ma nic do zrobienia po stronie Jenkinsa, ale po stronie Gulpa. Wywołanie polecenia CLI w gulp musi zwrócić odpowiednią wartość błędu, aby krok 'sh' nie działał poprawnie - domyślam się, że faktycznie zwraca 0, nawet jeśli nie kończy się pomyślnie. – amuniz

Odpowiedz

8

na JUnitResultArchiver spowoduje to warunek, aby mogło być prawdziwe, gdy budowa jest niestabilny:

currentBuild.result != null.

Jeśli dobrze pamiętam, ustawia go na NIESTABILNY, ale wystarczy sprawdzić, czy jest inny niż zerowy.

Więc można zrobić coś takiego

step([$class: 'JUnitResultArchiver', testResults: 'build/test-results/*.xml']) 
if (currentBuild.result == null) { 
    //contintue with your pipeline 
} else { 
    //notify that the build is unstable. //or just do nothing 
} 
0

Po stronie Jenkinsa nie ma nic do zrobienia, ale po stronie Gulpa. Wywołanie protokołu CLI musi zwrócić odpowiednią wartość błędu, aby krok SH zawodził nieprawidłowo. Jenkins po prostu interpretuje, co powraca powłoka, więc musisz zrobić, aby Gulp zwrócił błąd, gdy testy się nie powiedzie (zobacz this blog post, wydaje się, że to dokładnie osiąga).

Powiązane problemy