Livraison continue

Après l’intégration continue, c’est le mot à la mode sur le web ces derniers temps. Le concept est très simple, ceci consiste à réduire le nomrbe d’étapes nécessaires au déploiement d’une application. Pour le mettre en pratique il y a plusieurs solutions, utiliser un environnement PaaS similaire pour vos développements et la production (en utilisant la nouveauté Micro Cloud Foundry de VMWare, utiliser une instance EC2 spéciale). Et vous pouvez utiliser Chef pour gérer et automatiser votre configuration. Bien que ces solutions soient très interessantes, je trouve qu’elles sont finalement trop puissante et difficile à mettre en oeuvre dans des cas simples.
Je vais expliquer ici ma solution “simple” utilisant maven, des scripts shell et la détection du nom de la machine.
Exemple d’archive de livraison
Comme un exemple est mieux que des milliers de mots, vous trouverez un exemple de ma solution dans un dépot github Easy Release Archive. C’est un projet maven construisant un fichier zip contenant tout ce qui doit être déployé, et un script d’exemple pour configurer le serveur Glassfish.
Quel contenu ?
Pour comprendre comment il fonctionne, la meilleure chose à faire est de regarder son contenu
- un fichier assembly.xml décrivant les fichiers à inclure, leurs noms finaux et leurs localisations.
- quelques scripts dans /src/main/resources
- sanityCheck.sh : un script permettant de charger les variables en fonction du nom d’hôte de la machine et de s’assurer que les variables nécessaires sont correctement configurées
- setupGlassfish.sh : un script simple permettant de configurer un serveur Glassfish avec les datasources et d’autres paramètres
- un dossier global contenant les ficheirs de configuration globaux
- un dossier par nom d’hôte (dans mon cas samva-mbp) contenant un script shell shell/envSetup.sh permettant de configurer les variables nécessaires et un dossier config pour les fichiers de configuration propres à l’environnement.
- un fichier pom.xml file décrivant les versions des artefacts à utiliser dans la construction du fichier zip et le cycle de vie maven à adopter.
Un simple mvn package permettra de construire l’archive zip contenant tout ce qui est décrit dans le fichier assembly.xml. Il suffira ensuite de décompresser le zip et d’exécuter le ou les scripts correspondant au déploiement pour que celui-ci se fasse simplement, on peut même demander à son serveur d’intégration continue de le faire pour avoir un système simple mais puissant de livraison continue.

