1. Présentation
Le PatchPlugin
propose une méthode fiable pour garder des sites JCMS / JPlatform à jour pendant la période entre 2 versions de maintenance.
1.1 Contenu du module PatchPlugin
Les correctifs inclus dans chaque module PatchPlugin
sont :
- la totalité des correctifs de sécurité du coeur,
- les correctifs des issues coeur (projet JIRA JCMS) ayant une priorité Bloquante (Blocker) ou Critique (Critical),
- les correctifs jugés indispensables ou nécessaires pour la fiabilité du produit et des modules.
1.2 Mise à disposition
Les modules PatchPlugin
sont diffusés sur Jalios Community.
Chaque version du module est accessible via l'URL intuitive reprenant la version cible de JCMS / JPlatform.
Exemple :
1.3 Versions cibles de JCMS / JPlatform
Seuls les modules PatchPlugin
ciblant les dernières versions de maintenances de JCMS / JPlatform sont maintenus et évoluent pour proposer les nouveaux correctifs.
Cependant, lorsqu'une nouvelle version de maintenance de JCMS / JPlatform est diffusée, le PatchPlugin
de la version précédente est maintenu pendant 3 mois le temps de vous permettre d'effectuer la migration.
Exemple :
à l'heure de l'écriture de ces lignes :
- JCMS 9.0.5 et JPlatform 10.0.2 sont les dernières version de maintenance du produit,
- JCMS 9.0.5 a été diffusé il y a plus de 3 mois,
- JPlatform 10.0.2 date de moins de 3 mois.
sachant cela
- les modules PatchPlugin maintenus sont les suivants :
- PatchPlugin 9.0.5
- PatchPlugin 10.0.2
- PatchPlugin 10.0.1
(ce dernier module est disponible car la version 10.0.2 date de moins de 3 mois)
- PatchPlugin 9.0.5
- (L'hypothétique) module PatchPlugin 9.0.4 ne bénéficierait plus de nouvelles corrections (s'il existait), la version 9.0.5 ayant été diffusée depuis plus de 3 mois
1.4 Compatibilité
Chaque module PatchPlugin
est compatible exclusivement avec une version spécifique de JCMS / JPlatform.
Exemple : le PatchPlugin 10.0.2 peut être appliqué uniquement sur JPlatform 10.0.2
2. Installation du module PatchPlugin
Le module PatchPlugin
s'applique comme tous le modules JCMS / JPlatform, pour cela 2 possibilités :
- Installation automatique via l'environnement d'intégration continue JADE, c'est l'approche recommandée,
si vous n'utilisez pas encore JADE pour vos constructions, consultez le billet de blog JADE - Plate forme d'intégration continue JCMS pour une présentation des bénéfices liés à son utilisation, - Installation manuelle lors de la construction de la webapp.
2.1 Environnement JADE
1) Déposez le module PatchPlugin
dans JADE :
- Téléchargez le module
PatchPlugin
compatible avec votre version de JCMS / JPlatform, - Renommez le zip du module pour respecter la norme de nommage attendu sur JADE (sans espace),
par exemple,PatchPlugin_10.0.1.zip
- Lancez un accès SFTP sur le serveur JADE, avec le compte utilisateur
jade
, - Déposez le module
PatchPlugin
dans le répertoire/home/jade/tools/jenkins/jcmsartifact
de Jenkins.
2) Ajoutez la dépendance au module PatchPlugin
à votre webapp :
- Ouvrez le fichier
plugin.xml
de votre module principal, - Ajoutez le module
PatchPlugin
en tout premier dans la sectiondependencies
.<dependencies> <dependency name="PatchPlugin" /> <dependency name="..." /> <dependency name="..." /> </dependencies>
3) Relancez une build de votre webapp.
Pour plus d'information sur l'utilisation de JADE, la construction de webapp et la gestion des dépendances de module, consultez le document JADE 2.0 - Manuel d'installation et exploitation.
2.2 Construction manuelle
- Arrêtez votre webapp,
- assurez-vous d'être précisément sur la version de maintenance indiquée,
- supprimer tous les patchs existants de votre webapp,
notamment, la webapp ne doit pas contenir de répertoireWEB-INF/classes/com/jalios/
, - téléchargez le module
PatchPlugin
compatible avec votre version de JCMS / JPlatform - décompressez le zip du module à la racine de votre webapp
- pour déclencher une régénération automatique des types de contenus au démarrage, effectuez l'action suivante :
- sous Unix :
touch WEB-INF/data/types/*/*.xml
- sous Windows, dans PowerShell :
ls WEB-INF/data/types/*/*.xml | ForEach-Object {$_.LastWriteTime = Get-Date}
- sous Unix :
- effacez le contenu du répertoire
WEB-INF/jcmswork
, - procédez à une mise à jour de la propriété
channel.packer.version
pour garantir le rechargement des nouveaux fichiers javascript par les utilisateurs, - démarrez votre webapp.
3. Mise à jour du module PatchPlugin
Lorsqu'une nouvelle version du module PatchPlugin
est diffusée, suivez les mêmes étapes d'installation pour procéder son application.
4. Mise à jour de JCMS / JPlatform
Lorsqu'une nouvelle version de maintenance de JCMS ou de JPlatform est diffusée, vous devez procéder à une mise à jour dès que possible afin de profiter des nombreux correctifs apportés par ces versions de maintenances.
Lors de ces mises à jour, le PatchPlugin
précédemment utilisé dans votre webapp n'est plus utile et DOIT être supprimé.
4.1 Environnement JADE
- Modifiez le fichier
plugin.xml
de votre module de site pour retirer la dépendance auPatchPlugin
, - relancez une nouvelle build de votre webapp
4.2 Construction manuelle
Si vous n'utilisez pas JADE pour la construction de vos webapps, vous réalisez les montées de versions de JCMS / JPlatform grâce au JumboPatch
Dans ce cas :
- supprimez le répertoire
WEB-INF/plugins/PatchPlugin
- suivez le processus classique de déploiement du
JumboPatch
, comme indiqué dans la section "2. Déploiement d'un Jumbo Patch" de la documentation Migration de version avec les Jumbo Patchs; - après application du
JumboPatch
tous les fichiers de JCMS / JPlatform ayant fait l'objet d'une correction par le précédentPatchPlugin
seront automatiquement écrasés par ceux de la nouvelle version de JCMS / JPlatform, et les anciens fichiers patchés sont renommés avec le suffixe.custom
.
Recherchez tous ces fichiers.custom
et supprimez-les de la webapp.
5. FAQ
Le module PatchPlugin intégre-t-il les correctifs de sécurité ?
Oui. Tous les correctifs de sécurité sont systématiquement inclus dans le PatchPlugin
.
Le module PatchPlugin intégre-t-il le correctif XYZ ?
La liste des correctifs inclus dans chaque PatchPlugin
est indiquée :
- sur le document mis à disposition sur Jalios Community,
- ainsi que dans la description du module elle même (accessible depuis l'interface d'administration des modules, ou en consultant le fichier
WEB-INF/plugins/PatchPlugin/plugin.xml
).
Le module PatchPlugin est-il compatible avec le patch XYZ ?
Non. Le PatchPlugin
remplace et annule tous les patchs précédemment émis.
L'objectif du PatchPlugin
est de fiabiliser l'application des correctifs, chaque PatchPlugin
bénéficiant d'une validation de tous les tests automatisés en environnement d'intégration ainsi que d'une QA réalisée par l'équipe Jalios.
Ainsi, l'application de patch unitaire ne doit plus être effectuée.
Comment supprimer le PatchPlugin ?
En environnement JADE, retirez le module PatchPlugin
de vos dépendances, et relancez une build.
Sur une webapp construite manuellement, la suppression du module est plus ardue, vous pouvez cependant y parvenir de cette façon :
- ouvrez le fichier
WEB-INF/plugins/PatchPlugin/plugin.xml
- consultez la section
webapp-files
- pour chacun des fichiers listés dans cette section ;
remplacez le fichier de votre webapp par le fichier originellement fourni dans le war de base de JCMS / JPlatform utilisé par votre webapp. S'il s'agit d'un nouveau fichier apporté par lePatchPlugin
supprimez-le, - supprimez le répertoire
WEB-INF/plugins/PatchPlugin
Quelles différences entre PatchPlugin et JumboPatch ?
Leur seul point commun est de contenir le mot "Patch" dans leur nom, mais ils sont destinés à des usages totalement différents :
Les PatchPlugin
permettent d'appliquer des correctifs sur une version de maintenance spécifique.
Il s'agit de modules JCMS / JPlatform.
Les JumboPatch
permettent la montée de version d'une webapp, d'une version de maintenance à une autre.
Il s'agit d'archives au format zip utilisées uniquement lors de la construction manuelle d'une webapp.
Pour plus d'information à ce sujet, consultez Migration de version avec les Jumbo Patchs.