W projekcie, nad którym pracuję, używamy skryptów powłoki do wykonywania różnych zadań. Niektóre z nich to skrypty sh / bash, które uruchamiają rsync, a inne to skrypty PHP. Jeden ze skryptów PHP uruchamia testy integracji, które generują dane w formacie XML JUnit, raporty pokrycia kodu i tym podobne.
Jenkins jest w stanie oznaczyć zadania jako zakończone sukcesem / niepowodzeniem na podstawie statusu wyjścia . W PHP skrypt kończy pracę z wartością 1, jeśli wykryje, że testy zakończyły się niepowodzeniem podczas wykonywania. Pozostałe skrypty powłoki uruchamiają polecenia i używają kodów zakończenia z nich, aby oznaczyć kompilację jako nieudaną.
// :: End of PHP script:
// If any tests have failed, fail the build
if ($build_error) exit(1);
W terminologii Jenkinsa niestabilna kompilacja jest definiowana jako:
Kompilacja jest niestabilna, jeśli została pomyślnie utworzona, a co najmniej jeden wydawca zgłasza, że jest niestabilna. Na przykład, jeśli wydawca JUnit jest skonfigurowany i test zakończy się niepowodzeniem, kompilacja zostanie oznaczona jako niestabilna.
Jak mogę sprawić, by Jenkins oznaczał kompilację jako niestabilną, a nie tylko sukces / niepowodzenie, podczas uruchamiania skryptów powłoki?