pytanie: co jest najlepszym rozwiązaniem dla wykonywania „mvn wdrożyć”, tak że część Deploy jest uruchamiany dopiero po wykonaniu wszystkich testów jednostkowych uda i żadne etapy przetwarzania są duplikowane?Maven wielomodułowy wdrożyć do repozytorium dopiero po udanej jednostki testuje
Miałem nadzieję, że prosta odpowiedź brzmi: Wykonaj polecenie maven "x" (lub użyj flagi) w taki sposób, że wdrożenie można uruchomić bez wywoływania wcześniejszych celów w domyślnym cyklu życia.
Niestety wygląda na to, że nie ma prostej odpowiedzi. Podałem szczegóły na ścieżce, którą podążyłem do tej pory.
Mamy trzy następujące wymagania:
- Execute maven wdrożyć cel, aby wdrożyć wszystkie artefakty wielomodułowego do zdalnego repozytorium.
- Wdrażaj, jeśli wszystkie testy jednostkowe we wszystkich projektach są zaliczane.
- Nie powtarzaj żadnego przetwarzania.
Zaczęliśmy po prostu „mvn czystej deploy”, jednak zauważyliśmy kilka kwestii:
- kompilacja zatrzyma się przed zakończeniem wszystkie testy jednostkowe :: więc dodaliśmy --fail-AT- flaga końcowa
- Cel wdrożenia zostałby wykonany względem modułów, które się powiodły.
Wynika to w „uszkodzony” w stanie, w którym pilot repozytorium może ma tylko częściową rozmieszczenia (jeśli były moduły awarii później w produkcji).
Patrzyliśmy na 3 różne rozwiązania:
- inscenizacja artefakty przed wdrożeniem :: ten określono na zbyt ciężkie dla w pełni zautomatyzowanego procesu.
- Użyj profilu, aby zastąpić domyślny cykl życia, tak aby "mvn deploy -Pci-deploy" działał bez wywoływania jakichkolwiek wcześniejszych celów :: działało i było szybkie, ale jest oczywiście niekonwencjonalne.
- prostu działa „mvn czyste pakietowe”, a następnie tylko wtedy i tylko wtedy sukces Uruchom „mvn wdrożyć” :: wydaje się pracować i wydaje się tylko wziąć hitem, gdy cele są wywoływane (choć niektóre z nich są na tyle mądry, by nie przerabiają niezmienione roboczy)
stawiam to pytanie do społeczności ze szczegółami tła mam przewidzianych w celu ustalenia, czy istnieje lepsze podejście lub silna opinia na temat (potencjalnie) dokonanie jednego z następujących wniosków:
- Nowy cel wdrożenia, który może działać oddzielnie i niezależnie od wszystkich innych celów związanych z cyklem życia z oczekiwaniami że: wszystkie wcześniejsze kroki zostały już uruchomione i że będą wdrażać identyczne wdrożenie do "mvn deploy"
- flagę w celu wdrożenia, która skutecznie wyłącza poprzednie cele.
trochę bardziej po wyjęciu z pudełka i zdecydowanie przeciwko obecnej konwencji:
- flagę że powie Maven uruchomić [jednostka] cel testu dla wszystkich modułów przed kontynuowaniem.
Uwagi:
- Używamy Jenkins, ale dla celów tego pytania środowisko CI nie jest powikłaniem.
- Próbowałem wprowadzić cel "mvn deploy: deploy", ale miał on wiele niejasnych błędów.
- Nie rozważałem testów integracyjnych jako części wymagań.
Aktualizacja 8/20/2013
testowałem odroczony wtyczki wdrożyć i ustalił, że narzędzie działa zgodnie z oczekiwaniami, ale zajęło sposób na długo.
Dla naszej bazie kodu:
- mvn czystej deploy: dla wszystkich celów zawartych w 2:44
- mvn clean install 'odroczone-wdrożyć-plugin': na wszystkie cele realizowane w 15 min
- pakiet mvn clean; mvn wdrożyć -Pci wdrożeniu własnego profilu kompilacji, który wyłącza wcześniejsze cele realizowane:
- dla wszystkich celów (w tym wdrożeniu): 4:30
- wdrożyć tylko: 1:45
- mvn czyste pakiet; mvn wdrożyć -Dmaven.test.skip = true na tym samym obszarze roboczym wykonane:
- dla wszystkich celów (w tym wdrożeniu): Tylko 4:40
- Deploy: 1:54
Pakiet clean, po którym następuje wdrażanie pomijania testów, działa szybciej niż opóźnione wdrożenie i spełnił nasze pragnienie opóźnienia wdrożenia do momentu pomyślnego zakończenia testów.
Wygląda na to, że ma miejsce drobny przypadek czasu, gdy cykl życia wdrożenia jest wykonywany i kończy się każdy z poprzednich celów (proces, kompilacja, test, pakiet itp.). Jednak jedyną alternatywą jest zhackowanie niestandardowego wykonania, które oszczędza tylko 10 sekund.
Po ukończeniu sprawdzę i zaktualizuję odpowiedź. Dziękuję za odpowiedź! – Jared
Do tej pory wspomniany problem został przeniesiony do https://issues.apache.org/jira/browse/MDEPLOY-157 –
poprawiony. Dziękuję Ci – Hilikus