Mam projekt, który posiada:Jak zorganizować budowę rurociągu pełnego z Gulp, Maven i Jenkins, aż do testów integracyjnych?
- JS klientowi nieco ciekawego procesu kompilacji. Obejmuje to kompilację CSS, catenowanie i minimalizowanie JS i CSS, generowanie i przetwarzanie HTML oraz kilka innych czynności. Narzędzia Node, takie jak Grunt lub Gulp są w tym świetne.
- Serwer Java będący operacją WAR wdrożoną na serwerze Tomcat. Obejmuje te zasoby, a także cały kod Java. Posiada wszystkie rodzaje testów: testy jednostkowe, testy integracyjne, które mogą utworzyć instancję DAO i rozmowę z DB, oraz kompleksowe testy API, które faktycznie komunikują się z aplikacją działającą na Tomcat.
- End-to-end tests with Protractor. Jeśli nie jesteś zaznajomiony, jest to kolejne narzędzie Node, które otacza Selenium.
Jak zorganizować cały ten proces w rozsądny, solidny i zautomatyzowany sposób?
W tej chwili mam Gulp i Maven, a Maven w zasadzie jest właścicielem całego procesu.
- Wywołuje generowanie zasobów Gulp w źródłach generujących za pomocą narzędzia antirun (doh, narzędzie do budowania trzeciego!).
- Uruchamia zwykłą kompilację Java.
- Zaczyna Tomcat z moją wojną podczas testu przed integracją.
- Uruchamia testy Java E2E rozmawiające z tym tomcat za pomocą wtyczki failsafe.
- Ponownie wywołuje Gulpa z Antrun, tym razem aby uruchomić testy Kątomierza.
- Wyłącza Tomcat w teście po integracji.
- Powinien zweryfikować wyniki testu.
Tego rodzaju prace, z wyjątkiem tego, że Maven jest ogólnie bardzo sztywny i czuję, że zajmuję to za daleko. Używanie antrun do wywoływania Gulpa to brzydka sztuczka. Bardzo trudno kontrolować zależności między tymi krokami i monitorować ich wyniki. Trudno kontrolować porządek rzeczy w tej samej fazie. Weryfikacja Failsafe nie przetwarza zewnętrznych plików raportów JUnit wygenerowanych przez Gulp. Mógłbym iść dalej.
Zastanawiam się, czy powinienem zrobić więcej w moim serwerze budowania (Jenkins), może przy użyciu budowania potoków lub sparametryzowanych wyzwalaczy - ale nigdy tego nie robiłem i nie jestem pewien, czy to naprawdę jest lepsze.
A więc, jak byś to wdrożył?
Miałem podobny zapytanie o Programmers.SE: http://programmers.stackexchange.com/questions/222660 – yochannah
Które rozwiązanie poszedłeś za? Zaraz zacznę od tego samego. Maven i Jenkins są już częścią procesu, ale chcę wprowadzić w to łyk dla CSS i js kompresji, minifikacji itp. – br3w5