Semplice strumento di distribuzione basato su Java
Sto cercando uno strumento di distribuzione molto semplice per i progetti JVM (Java, Spring, Grails, ecc.), con le seguenti funzionalità:
- non richiede server/agent/etc dedicato, voglio eseguire la distribuzione da una macchina sviluppatore (o dal server CI) come semplice comando della console
- non richiede alcuna configurazione speciale del server e non dovrebbe creare la configurazione del server per te
- basta caricare una GUERRA usando SCP, o idealmente usando rsync (l'aggiornamento è cambiato solo file)
- (idealmente) caricamento di file statici su s3 / cloudfront
- può eseguire il comando sul server remoto (riavviare un servizio tomcat)
- memorizza alcune versioni più recenti sul server e la possibilità di eseguire il rollback su ognuna di esse (in pratica dovrebbe essere un aggiornamento di un collegamento simbolico)
- può essere configurato per utilizzare diversi server (test, staging e produzione)
- (idealmente) avere un plugin Maven o un plugin Grails
- supporta il caricamento su pochi server in parallelo
Dovrebbe essere qualcosa come:
$ deploytool staging deploy
$ deploytool staging rollback
O
$ mvn deploytool:deploy -P staging
$ mvn deploytool:rollback -P staging
Fondamentalmente è solo un:
- compila + prova + crea archivio
- crea la directory "data" sul server (
/.../application/version-%date%/
) - caricare contenuti di GUERRA in questa directory, da maching locale
- aggiorna il collegamento simbolico dal precedente (
/.../application/current/
->/.../application/version-%date%/
- riavvia tomcat (
sudo service tomcat7 restart
) - elimina la directory con la versione più vecchia (mantieni solo le ultime 5 versioni o le versioni per gli ultimi 45 giorni)
- se qualcosa non va-aggiornamento collegamento simbolico alla versione precedente (e riavvio di tomcat)
Ho dato un'occhiata a Puppet e JClouds, ma sembra che sia una cosa diversa, più sulla configurazione del cluster, non sulla distribuzione. Attualmente sto usando Ruby Capistrano per un progetto e bash scripts per un altro. Capistrano è buono, ma richiede l'installazione di rvm, ruby, gems, ecc., non funziona bene per il team non ruby e richiede molte personalizzazioni per il progetto java.
Quindi, mi chiedo, c'è qualche Strumento simile a Capistrano per progetti Java/JVM?
2
Author: Bo Persson, 2012-07-23
1 answers
- Utilizzare
maven-compiler-plugin
,maven-surefire-plugin
emaven-war-plugin
per costruire - Utilizzare
buildnumber-maven-plugin
per creare proprietà con valore timestamp corrente - Usa
wagon-maven-plugin
con il valore di timestamp generato per caricare war sul server di staging - Usa
sshexec-maven-plugin
per avviare script di shell che riavvieranno tomcat con l'applicazione per la versione selezionata
2
Author: Andriy Plokhotnyuk, 2012-07-23 17:23:23