2011-12-23 22 views
6

używam Jenkins przeprowadzić kilka testów integracyjnych na appilcation internetowej (przy użyciu ogórek, kapibary i selen)Jenkins Budowa zawodzi, gdy artefakty nie są tam

Everytime test nie powiedzie się, zrzut ekranu, źródło HTML i video proces zostanie zapisany.

struktura ścieżka wygląda następująco:

results/output/<test_name>/<files> 

używam artefakty archiwalne cechą Jenkins dostarczenie plików (wzorzec: results/output/*/*). Działa świetnie.

Jednak po pomyślnym ukończeniu kompilacji nie ma zrzutów ekranowych/filmów itp. ... a kompilacja nie powiedzie się, ponieważ Jenkins nie może znaleźć plików dla wzorca.

Czy istnieje sposób, aby powiedzieć Jenkinsowi, aby odniósł sukces bez konieczności posiadania plików?

Nie chcę robić brudnego hacka, który polega na tworzeniu pustej struktury folderów, takich jak result/output/success/hooray.txt.

+0

dobre pytanie; Zastanawiałem się dokładnie o tym samym! – Jonik

Odpowiedz

4

Pobiegłem do podobnego problemu na kilka naszych projektów. Rozróżniamy go na dwa sposoby (na dwóch różnych wersjach).

1) Dodano polecenie do kroków kompilacji, które tworzą fałszywy plik tymczasowy, jeśli żadne pliki już nie istnieją.

W tym przypadku był przeznaczony do pobrania pliku output.pdf, który zostałby wygenerowany, gdyby testy się nie powiodły. Dodałem krok kompilacji, w przypadku gdy plik ten nie istnieje, utworzyliśmy plik "missing.pdf". Wtedy to, co zbieram jako artefakty, to "* .pdf" z podanego katalogu. Wygląda na to, że całkiem dobrze.

2) W innej kompilacji musieliśmy zebrać zestaw plików za pomocą globu.

To, co tutaj zrobiliśmy, sprawiło, że etap kompilacji zawsze tworzy pojedynczy pusty plik w obszarze docelowym. W ten sposób glob zawsze pasuje do czegoś.

Są to najlepsze rozwiązania odkryliśmy do tej pory. Jeśli znajdziesz coś lepszego, chciałbym o tym usłyszeć.

+0

Dodałem krok, który utworzył plik success.txt, gdy folder był pusty po kompilacji – leifg

13

Jest kwestią otwartą na za to: https://issues.jenkins-ci.org/browse/JENKINS-10502

zachowanie jest kontrolowane przez właściwość systemu hudson.tasks.ArtifactArchiver.warnOnEmpty, jak wyjaśniono na https://wiki.jenkins-ci.org/display/JENKINS/Features+controlled+by+system+properties

+1

+1, myślę, że jest to poprawna odpowiedź. (Jeśli ktoś zastanawia się, jak uzyskać to pracę z Jenkins działa na Debian/Ubuntu, edytować '/ etc/default/jenkins' i umieścić' -Dhudson.tasks.ArtifactArchiver.warnOnEmpty = TRUE w ** JAVA_ARGS ** (lub ewentualnie JENKINS_JAVA_OPTIONS). JENKINS_ARGS nie będzie działać, przynajmniej jeśli masz więcej niż jedną właściwość -D! – Jonik

+2

Mimo to, jak ktoś komentuje w kwestii związanej z ty, wstyd, że to nie może być skonfigurowana z wyboru w interfejsie na Jenkins na podstawie jednego stanowiska. – Jonik