Zautomatyzowane rozwiązanie do wdrażania wielu aplikacji internetowych Java

Szukam rozwiązań, najlepiej open source, które mogą zarządzać wdrożeniami wielu współzależnych aplikacji internetowych Java.

Rozwiązanie wymaga zdolności do tworzenia i przechowywania specyfikacji wydania zawierającej wiele elementów dla wersji poszczególnych wersji aplikacji i odpowiednich innych artefaktów (konfiguracja bazy danych, konfiguracja apache itp.).

Następnie specyfikacja musi zostać przeanalizowana, a każdy element musi zostać wdrożony / wykonany w środowisku docelowym. Środowisko docelowe jest oparte na systemie Linux. Aplikacje internetowe to waniliowe wojny działające na standardowym serwerze aplikacji j2ee.

Dużo zapytać?

Obecnie myślę, że wszystkie bity są na miejscu - artefakty binarne są wydawane wraz zwtyczka maven release i stąd dostępne z naszegomaven repo do wdrożenia,Baza danych jest wersjonowany zdbdeploy ikonfiguracja apache jest wersjonowanysvn. Nie znam jednak żadnego narzędzia, które może połączyć wszystkie te kroki w wielu aplikacjach.

Moim obecnym preferowanym podejściem jest użycie postaci sparametryzowanej kompilacji dla hudson do stworzenia specyfikacji. Następnie druga sparametryzowana kompilacja, aby wybrać wstępnie utworzoną specyfikację i wdrożyć / wykonać ją w wybranym środowisku.

Jednak wydaje się, że jest to dużo pracy i mniej niż optymalne rozwiązanie niestandardowe.

Czy ktoś wie, jakie wcześniej zbudowane lepsze pomysły? lub sugestie, jak się do tego zbliżyć - może silnik przepływu pracy byłby lepszy niż hudson? może niestandardowa aplikacja internetowa?

Uwagi:

Środowiska docelowe są wstępnie zbudowane ze wszystkimi wymaganiami - np. zainstalowano serwer Java i serwer aplikacji, uruchomiono bazę danych itp. Jest to mniej pytanie dotyczące konfiguracji środowiska i więcej pytań dotyczących wdrażania.

Automatyzacja wdrażania pojedynczych aplikacji stanowi problem z wieloma rozwiązaniami, np. ładunki, skrypty instalowania mrówek itp. Jednak potrzebuję czegoś, co może łączyć wiele wdrożeń. Na przykład. rozpocznij ładunek w określonych wersjach wielu aplikacji i ich wymaganiach.

questionAnswers(9)

yourAnswerToTheQuestion