Outil de déploiement simple basé sur Java


Je recherche un outil de déploiement très simple pour les projets JVM (Java, Spring, Grails, etc.), avec les fonctionnalités suivantes:

  • ne nécessite pas de serveur/agent / etc dédié, je veux exécuter le déploiement à partir d'une machine de développeur (ou à partir du serveur CI) en tant que simple commande de console
  • ne nécessite aucune configuration de serveur spéciale, et n'est pas censé faire la configuration du serveur pour vous
  • il suffit de télécharger une GUERRE en utilisant SCP, ou idéalement en utilisant rsync (mise à jour seulement modifiée les fichiers)
  • (idéalement) téléchargement de fichiers statiques sur s3 / cloudfront
  • peut exécuter une commande sur un serveur distant (redémarrage d'un service tomcat)
  • stocker quelques dernières versions sur le serveur, et la possibilité de revenir à l'un d'eux (fondamentalement, il devrait être une mise à jour d'un lien symbolique)
  • peut être configuré pour utiliser différents serveurs (test, staging et production)
  • (idéalement) avoir un plugin Maven ou un plugin Grails
  • prise en charge du téléchargement sur quelques serveurs en parallèle

Devrait soit quelque chose comme:

$ deploytool staging deploy 
$ deploytool staging rollback

Ou

$ mvn deploytool:deploy -P staging
$ mvn deploytool:rollback -P staging

Fondamentalement, c'est juste un:

  1. compiler + tester + construire l'archive
  2. créer le répertoire 'date' sur le serveur (/.../application/version-%date%/)
  3. télécharger du contenu de GUERRE dans ce répertoire, à partir de maching local
  4. mettre à jour le lien symbolique du précédent (/.../application/current/ -> /.../application/version-%date%/
  5. redémarrer tomcat (sudo service tomcat7 restart)
  6. supprimer le répertoire avec la version la plus ancienne (ne conserver que les 5 dernières versions, ou les versions pour les 45 derniers jours)
  7. si quelque chose ne va pas-update lien symbolique vers la version précédente (et redémarrez tomcat)

J'ai jeté un œil à Puppet et JClouds, mais il semble que ce soit une chose différente, plus sur la configuration du cluster, pas sur le déploiement. Actuellement, j'utilise Ruby Capistrano pour un projet et bash scripts pour un autre. Capistrano est bon, mais nécessite l'installation de rvm, ruby, gems, etc., il ne fonctionne pas bien pour l'équipe non-ruby, et nécessite beaucoup de personnalisations pour le projet java.

Alors, je me demande, y a-t-il Outil de type Capistrano pour les projets Java/JVM?

Author: Bo Persson, 2012-07-23

1 answers

  1. Utiliser maven-compiler-plugin, maven-surefire-plugin et maven-war-plugin pour construire
  2. Utilisez buildnumber-maven-plugin pour créer une propriété avec la valeur d'horodatage actuelle
  3. Utilisez wagon-maven-plugin avec la valeur d'horodatage générée pour télécharger war sur le serveur de transfert
  4. Utilisez sshexec-maven-plugin pour démarrer les scripts shell qui redémarreront tomcat avec l'application pour la version sélectionnée
 2
Author: Andriy Plokhotnyuk, 2012-07-23 17:23:23