Bienvenue

Jalios Community

Tout ce que vous souhaitez savoir sur l'écosystème Jalios

PatchPlugin - Présentation et utilisation
JCMS 9 JPlatform 10
Olivier Jaquemet
March 25, 2019 454 vues
In brief...

Cette fiche présente le PatchPlugin ainsi que ses modalités d'application.


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)
  • (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 : 

  1. 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 (Restricted access link)  pour une présentation des bénéfices liés à son utilisation,
  2. 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 section dependencies.
      <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épertoire WEB-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}
  • 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 au PatchPlugin,
  • 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 : 

  1. supprimez le répertoire WEB-INF/plugins/PatchPlugin
  2. suivez le processus classique de déploiement du JumboPatch, comme indiqué dans la section "2. Déploiement d'un Jumbo Patch" de la documentation  (Restricted access link) ;
  3. après application du JumboPatch tous les fichiers de JCMS / JPlatform ayant fait l'objet d'une correction par le précédent PatchPlugin 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 le PatchPlugin 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  (Restricted access link) .