Wdrożenie równoległe Tomcat, automatycznie wdrażaj stare aplikacje

10

Od jakiegoś czasu korzystam z równoległego wdrażania Tomcat 8 w ramach instalacji ciągłego wdrażania bez przestojów.

Po uruchomieniu rękawicy testowej serwer CI automatycznie zmienia nazwę pliku .war na aplikację ## {numer wersji} .war i kopiuje wojnę do folderu / webapp. aplikacja ## 333 będzie ładnie współistnieć z aplikacją ## 332.

Jedyny problem, z jakim się spotykam, polega na tym, że muszę ręcznie wdrożyć starsze aplikacje, gdy cały ruch (nowe sesje) zostanie automatycznie przeniesiony do nowej.

Czy Tomcat ma wbudowany mechanizm do powiedzenia „hej, kiedy ta usługa spadnie do zera sesji, powinna zostać usunięta”? Może jakieś zdarzenie „właśnie minęła ostatnia sesja”, z którego mogę skorzystać.

Jeśli ktokolwiek inny zautomatyzował tego rodzaju aplikacje, które chciałbym wdrożyć, chciałbym o tym usłyszeć. Dzięki!

Martin Cron
źródło

Odpowiedzi:

9

Możesz skonfigurować Tomcat, aby usuwał stare aplikacje. Musisz dodać undeployOldVersionsatrybut do Hostelementu i ustawić go na true. Musisz zmodyfikować hosta w server.xml na coś takiego:

<Host undeployOldVersions="true" ...>
   ...
</Host>

Szczegółowe informacje można znaleźć w dokumentacji hosta . W szczególności działa to tylko wtedy, gdy włączone jest automatyczne wdrażanie.

Mark Thomas
źródło
W jakiej wersji Tomcat prowadzisz? Mam Tomcat 8.5.6 i to nie działa. Włączyłem FarmWarDeployer, a nowe wersje są wdrażane automatycznie. Jednak po włączeniu undeployOldVersions w znaczniku Host starsze pliki wojenne (i wdrożenia) nie są usuwane.
Piko
Jakieś postępy w tej kwestii z Tomcat 8?
JimmyD
1
Ta funkcja jest zaimplementowana w Tomcat 8. Jeśli występują problemy podczas korzystania z FarmWarDeployer, otwórz błąd, zawierający kroki do odtworzenia, aby można było na niego spojrzeć.
Mark Thomas