Migration de version avec les Jumbo Patchs

1. Introduction

1.1 Principe général

Les Jumbo Patchs sont des archives au format ZIP permettant une migration plus rapide et plus simple entre 2 versions de maintenance de JCMS.

  1. Jalios crée un Jumbo Patch
  2. La personne en charge de la migration applique le Jumbo Patch avec l'outil JumboPatchDeploy
  3. Cette même personne ré-applique les développements spécifiques.

IMPORTANT 1 : Les Jumbo Patchs doivent impérativement être appliqués en utilisant l'outil JumboPatchDeploy. Ne décompressez jamais manuellement un Jumbo Patch dans une webapp JCMS.

IMPORTANT 2 : lors de l'application d'un jumbopatch, les classes situées dans WEB-INF/classes/com/jalios/ sont supprimées. Par conséquent, si vous avez créé des classes spécifiques à vos plugins dans l'arborescence WEB-INF/classes/com/jalios/jcmsplugin, il faut impérativement les remettre derrière le passage du patch (et donc backuper au préalable les classes en question).

IMPORTANT 3 : l'application d'un jumbo patch doit être réalisé sur une copie de la webapp dans un environnement de développement. Il ne faut en aucun cas réaliser cette opération de migration sur le serveur !

1.2 Téléchargement des outils

Les JumboPatchTools sont fournis dans un seul et unique fichier JAR afin de faciliter leur utilisation.
Cliquez sur le lien suivant pour télécharger la dernière version disponible :

IMPORTANT : ne mettez JAMAIS ce jar dans une webapp JCMS.

1.3 Téléchargement des Jumbo Patchs

Les Jumbo Patchs sont disponibles sur le site support dans la section Téléchargement / JCMS / Jumbo Patches.

2. Déploiement d'un Jumbo Patch

2.1 Prérequis

  • une webapp JCMS à migrer
  • le jumbo patch spécifique à la version mineure de votre webapp JCMS

2.2 Principe de fonctionnement

Voici les différentes taches que l'outil fait à votre place :

  1. Une vérification est effectuée pour s'assurer que la webapp est compatible avec le patch,
  2. Les fichiers à supprimer sont effacés de la webapp,
  3. Les fichiers nouveaux ou non conflictuels sont copiés dans la webapp,
  4. Les fichiers conflictuels sont marqués de la façon suivante :
    • Le fichier modifié de la webapp est renommé avec l'extension ".custom"
    • Le fichier issue du patch est appliqué,
  5. Les répertoires WEB-INF/classes/generated, WEB-INF/classes/com/jalios et WEB-INF/jcmwork/ sont effacés complétement.

2.3 Utilisation

L'outil peut être lancé soit en ligne de commande, soit depuis Eclipse en référençant le jar dans un lanceur Java.

Avant tout : effectuez une sauvegarde complète de votre webapp actuelle.

Première étape : vérifiez ce qui va être fait, en spécifiant l'option -dryrun

 java -jar jcms-jumbo-patch-tools-1.0.jar -dryrun patch-60-to-602.zip jcms-6.0.0/

Seconde étape : déclenchez le déploiement du patch

  java -jar jcms-jumbo-patch-tools-1.0.jar patch-60-to-602.zip jcms-6.0.0/

Après application du patch, un fichier de log, avec un résumé de toutes les modifications, est accessible dans la webapp pour historique : WEB-INF/data/logs/jumbo-patch-deploy.log (en cas de nouvelle migration, les nouvelles informations de modification seront ajoutées en fin de fichier)

Troisième étape : résoudre les conflits.
Cherchez manuellement tous les fichiers .custom dans la webapp et comparez-les avec le nouveau fichier, dans lequel vous reporterez les modifications éventuelles.
Exemple : si doArticleFullDisplay.jsp a été modifié, alors après application du patch on trouvera les 2 fichiers suivants :

  • doArticleFullDisplay.jsp.custom (version modifiée )
  • doArticleFullDisplay.jsp (fichier de la nouvelle version de JCMS)

3. Informations avancées

En plus des fichiers propre à JCMS, un jumbo patch contient :

  • un fichier de propriété le décrivant (date de création, version jcms source, version jcms cible): WEB-INF/jalios/jumbo-patch.prop
  • 3 fichiers de références déployés tel quel :
    • WEB-INF/data/custom.prop.default
    • WEB-INF/data/webapp.prop.default
    • WEB-INF/data/store.xml.default

Les fichiers qui doivent être supprimés pour la migration sont présents dans le Jumbo Patch sous la forme de fichiers vides.

Sous unix, pour obtenir la liste des fichiers qui sont en conflit avant toute modification, il suffit de taper la commande suivante :

 java -jar jcms-jumbo-patch-tools-1.0.jar -dryrun -debug jumbopatch-6.1.1-6.1.3.zip jcms-6.1.1/ | grep Renaming

4. Déploiement en production

Cette fiche décrit le processus de mise à jour d'une application vers une nouvelle version, pas son déploiement sur un serveur de production.
Pour le passage en production d'une application, d'autre actions sont nécéssaires, notamment :

  • Invalidation des caches clients : après une mise à jour applicative, il est nécessaire d'effectuer une configuration sur l'application Jalios pour provoquer l'invalidation des caches JS et CSS sur les postes des utilisateurs. Cette procédure est décrit dans :  Comment invalider les caches CSS et JS ?
  • Déploiement  : Le déploiement peut être automatisé et simplifié grâce à la mise en oeuvre du  nouveau système de déploiement
  • Actions spécifiques au serveur d'application : pour une bonne prise en compte de la nouvelle version de l'application web par votre serveur d'application, suivez les recommandations spécifique à votre serveur. Par exemple sur Tomcat, effacez les répertoires temporaires et le répertoire work(celui de tomcat, pas celui contenu dans la webapp JCMS) pour forcer la recompilation des JSPs.

En résumé...

Cet article décrit le principe de fonctionnement des Jumbo Patchs et leur application avec les Jumbo Patch Tools, pour la migration d'une webapp JCMS vers une version de maintenance.

Sujet
Produits
Publié

12/04/10

Rédacteur
  • Olivier Jaquemet