SlideShare une entreprise Scribd logo
1  sur  24
Montée de version
d’une instance Liferay
Les clés du succès

Sébastien Le Marchand
Expert Technique – SQLI Group
SQLI - Un modèle intégré avec 5 métiers
        SOLUTION | PROGICIELS | AGENCE DIGITALE | CONSEIL | INGÉNIERIE
        Aller de l’idée à l’accompagnement du changement



                        Partenaire de Liferay
Conseil / intégration / accompagnement à la
     mise en place de portails collaboratifs



                 UNE STRUCTURE
                 INTERNATIONALE
                 1800 collaborateurs
                 CA 165 M€
Agenda
Etat des lieux et enjeux

Mise à jour des développements spécifiques
   En amont : réaliser des développements facilitant la mise à jour

   Méthode de mise à jour des portions de code issues de la version précédente


Problématiques avancées liées aux données
   Réaliser une procédure de mise à jour de données spécifique

   Migration de données multi-sources


Conclusion
Etat des lieux et enjeux
Les ingrédients d’une montée de version…
            Mise à jour d’une instance
                         =
          Mise à jour de la configuration
                         +
           Mise à jour logiciel standard
                         +
        Mise à jour standard des données
                         +
           Mise à jour logiciel spécifique
                         +
        Mise à jour spécifique des données
… et la recette
1) Préparation

   Adapter la configuration à la nouvelle version
   Adapter les développements spécifiques à la nouvelle version

2) Déploiement

   Installer une instance vierge dans la nouvelle version
   Installer les plugins spécifiques (développements & configuration)
   Connecter l’instance aux données existantes (DB + FS)
   Démarrer…

       Liferay met à jour automatiquement les données
Plus de détails
 Suivant les versions source et destination, il peut y avoir
des spécificités dans la procédure : toujours se référer à la
procédure officielle communiquée par Liferay

 Les montées de version vers les service packs peuvent
être évitées par l’usage des “Hotfixes”

 Les fichiers portal-legacy-*.properties facilitent
l’adaptation de la configuration

 L’adaptation des développements spécifiques représente
en général l’essentiel de l’effort à fournir
Mise à jour des
développements spécifiques
Quels développements spécifiques ?
 Plugins “Portlet”
                                          Mise à jour
 Plugins “Theme”                              =
                              1. Build  correction erreurs
                              2. Deploy  correction erreurs
 Plugins “Layout Template”   3. Test  correction erreurs

 Plugins “Web”
                                            Mise à jour
 Plugins “Hook”                                 =
                              1.   Inspection et adaptation du
 Plugins “Ext”                    code source
                              2.   Build  correction erreurs
                              3.   Deploy  correction erreurs
                              4.   Test  correction erreurs
Hook & Ext : comment faciliter et
sécuriser la mise à jour en amont ?

Bonnes pratiques pour la réalisation de développements
spécifiques :

 Faire la chasse aux copier-collers qui devront être migrés

 Isoler et délimiter les développements spécifiques
Inclusion de la JSP originale
 Pour des ajouts avant et/ou après le code original
 Exemple : ajouter un bandeau en tête de la portlet de login


   Code spécifique                Code spécifique

    Code original
                                <%@ include file=
                                 "login.portal.jsp"
                                %>




/html/portlet/login/login.jsp
Faire usage de l’héritage de classe
 Concerne essentiellement les plugins “Ext”

 Exemple : classe com.liferay.portal.util.PortalImpl


       PortalImpl               <bean id="com.liferay.portal.util.PortalUtil"
                                        class=" ...">
                                  <property name="portal">

   +getHomeURL()                     <bean class=“....CustomPortalImpl" />
                                  </property>
                                </bean>



    CustomPortalImpl
                               ext-spring.xml
   +getHomeURL()
Faire usage de l’introspection
 Pour accéder depuis un plugin à une classe du portail

     AssetUtil             << introspection >>   AssetUtil

      portal-impl.jar
              ROOT.war                           monplugin-hook.war


                        PortalClassInvoker

                               portal-service.jar

 Procédé déjà utilisé nativement
   • com.liferay.portal.kernel.util.PrefsPropsUtil
   • com.liferay.portal.kernel.util.PropsUtil
   • …
…encore un peu plus d’introspection
 Pour accéder à une méthode privée

Class clazz = … ;
java.reflect.method m = clazz.getDeclaredMethod(…);
…
m.setAccessible(true);
m.invoke(…);




 L’abus d’introspection peut être
dangereux pour votre application
Délimiter le code spécifique
 Délimiter le code spécifique   <!-- BEGIN CUSTOM CODE -->
par des blocs de commentaires    …
    • Ajouts                     …
    • Modifications              <!-- END CUSTOM CODE -->
    • Suppressions



 Déporter les blocs de taille
importante dans des fichiers     <!-- BEGIN CUSTOM CODE -->
JSPF                             <%@ include file="mypage.jspf" %>
                                 <!-- END CUSTOM CODE -->
Préserver le code issue de Liferay
 Des copier-collers de code depuis Liferay resteront toujours
inévitables dans certains cas
   • Dans certaines JSP
   • Dans certaines méthodes redéfinies



 Ces portions de code
    Ne doivent pas être reformatées
    Ne doivent pas être refactorées
    Doivent être délimitées par des commentaires (pour les classes Java)
Méthode de mise à jour et outils
 Mettre en regard
  • Le fichier natif de la version source
  • Le fichier modifié à partir de la version source
  • Le fichier natif de la version cible

 Des outils adaptés
  •   WinMerge
  •   MeId
  •   Kdiff3
  •   Araxis Merge
  •   …

 Adopter une méthode systématique
  • Plusieurs approches possibles
Exemple avec WinMerge
Problématiques avancées
   liées aux données
Mise à jour spécifique des données
 Des données spécifiques peuvent être dépendantes d’une
version de Liferay

 Exemple : préférence de portlet référençant une image
dans Liferay 6.0

 Possibilité d’implémenter des “upgrade process” au sein
des plugins spécifiques
Migration de données multi-sources
 Plusieurs instances Liferay sources en version X

 Une instance Liferay cible en version Y

 Procédure
    1. Montée de version sur chaque instance source
    2. Export des données concernées au format LAR
    3. Import des fichiers LAR

       Problématiques périphériques
    •     Dates de création et de modification
    •     Identité des utilisateurs
Conclusion
Pour bien aborder ses montées de version
 Réduire au maximum certains développements spécifiques

 Appliquer des bonnes pratiques lors de la réalisation des
développements

 Trouver le bon rythme
   • Evaluer les avantages de chaque montée de version potentielle
   • Considérer les Hotfixes
   • Ne pas attendre jusqu’à devoir faire un saut de géant (4.3  6.1)

 Suivre les procédures communiquées par Liferay

 Gérer chaque montée de version comme un vrai projet
Merci !



                       Des questions ?




Sébastien Le Marchand            SQLI Group
slemarchand@sqli.com             www.sqli.com

@slemarchand                     www.entreprise-collaborative.fr

Contenu connexe

Tendances

JCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratiqueJCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratiqueRossi Oddet
 
20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation MavenArnaud Héritier
 
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Ippon
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 
Ces outils qui vous font gagner du temps
Ces outils qui vous font gagner du tempsCes outils qui vous font gagner du temps
Ces outils qui vous font gagner du tempsAntoine Rey
 
Workshop Spring 3 - Tests et techniques avancées du conteneur Spring
Workshop Spring  3 - Tests et techniques avancées du conteneur SpringWorkshop Spring  3 - Tests et techniques avancées du conteneur Spring
Workshop Spring 3 - Tests et techniques avancées du conteneur SpringAntoine Rey
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Antoine Rey
 
Tech Days Spring Intégration
Tech Days Spring IntégrationTech Days Spring Intégration
Tech Days Spring IntégrationArrow-Institute
 
1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...
1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...
1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...Microsoft
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les basesAntoine Rey
 
Workshop Spring - Session 4 - Spring Batch
Workshop Spring -  Session 4 - Spring BatchWorkshop Spring -  Session 4 - Spring Batch
Workshop Spring - Session 4 - Spring BatchAntoine Rey
 
Quand java prend de la vitesse, apache maven vous garde sur les rails
Quand java prend de la vitesse, apache maven vous garde sur les railsQuand java prend de la vitesse, apache maven vous garde sur les rails
Quand java prend de la vitesse, apache maven vous garde sur les railsArnaud Héritier
 
JSF2, Primefaces, Primefaces Mobile
JSF2, Primefaces, Primefaces MobileJSF2, Primefaces, Primefaces Mobile
JSF2, Primefaces, Primefaces MobileSylla Mamoudou
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootDNG Consulting
 
Microbox : Ma toolbox microservices - Julien Roy
Microbox : Ma toolbox microservices - Julien RoyMicrobox : Ma toolbox microservices - Julien Roy
Microbox : Ma toolbox microservices - Julien Royekino
 
Game of upgrades to liferay dxp - ep1: Migration de données
Game of upgrades to liferay dxp - ep1: Migration de donnéesGame of upgrades to liferay dxp - ep1: Migration de données
Game of upgrades to liferay dxp - ep1: Migration de donnéesQuang Tu LE
 

Tendances (20)

Soiree Maven 2
Soiree Maven 2Soiree Maven 2
Soiree Maven 2
 
JCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratiqueJCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratique
 
Maven
MavenMaven
Maven
 
20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven
 
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
Ces outils qui vous font gagner du temps
Ces outils qui vous font gagner du tempsCes outils qui vous font gagner du temps
Ces outils qui vous font gagner du temps
 
Maven
MavenMaven
Maven
 
Workshop Spring 3 - Tests et techniques avancées du conteneur Spring
Workshop Spring  3 - Tests et techniques avancées du conteneur SpringWorkshop Spring  3 - Tests et techniques avancées du conteneur Spring
Workshop Spring 3 - Tests et techniques avancées du conteneur Spring
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?
 
Tech Days Spring Intégration
Tech Days Spring IntégrationTech Days Spring Intégration
Tech Days Spring Intégration
 
1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...
1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...
1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les bases
 
ParisJUG Spring Boot
ParisJUG Spring BootParisJUG Spring Boot
ParisJUG Spring Boot
 
Workshop Spring - Session 4 - Spring Batch
Workshop Spring -  Session 4 - Spring BatchWorkshop Spring -  Session 4 - Spring Batch
Workshop Spring - Session 4 - Spring Batch
 
Quand java prend de la vitesse, apache maven vous garde sur les rails
Quand java prend de la vitesse, apache maven vous garde sur les railsQuand java prend de la vitesse, apache maven vous garde sur les rails
Quand java prend de la vitesse, apache maven vous garde sur les rails
 
JSF2, Primefaces, Primefaces Mobile
JSF2, Primefaces, Primefaces MobileJSF2, Primefaces, Primefaces Mobile
JSF2, Primefaces, Primefaces Mobile
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring Boot
 
Microbox : Ma toolbox microservices - Julien Roy
Microbox : Ma toolbox microservices - Julien RoyMicrobox : Ma toolbox microservices - Julien Roy
Microbox : Ma toolbox microservices - Julien Roy
 
Game of upgrades to liferay dxp - ep1: Migration de données
Game of upgrades to liferay dxp - ep1: Migration de donnéesGame of upgrades to liferay dxp - ep1: Migration de données
Game of upgrades to liferay dxp - ep1: Migration de données
 

En vedette

Super Curta (Nx Power Lite)
Super Curta (Nx Power Lite)Super Curta (Nx Power Lite)
Super Curta (Nx Power Lite)Ligia Mello
 
Mechanisms of Armour Penetration
Mechanisms of Armour PenetrationMechanisms of Armour Penetration
Mechanisms of Armour PenetrationNiko Holkko
 
Question 7
Question 7Question 7
Question 7Daleisio
 
CCNA certificate
CCNA certificateCCNA certificate
CCNA certificaterahul_cuet
 
O que acontece quando falhamos no que é mais importante?
O que acontece quando falhamos no que é mais importante?O que acontece quando falhamos no que é mais importante?
O que acontece quando falhamos no que é mais importante?Hugo Machado
 
Attendance 24th june 2016
Attendance 24th june 2016Attendance 24th june 2016
Attendance 24th june 2016maggiebarton
 
Mohamed mohi work proud2
Mohamed mohi work proud2Mohamed mohi work proud2
Mohamed mohi work proud2Mohamed Saleh
 
Emerging City Report - Johannesburg (2014)
Emerging City Report - Johannesburg (2014)Emerging City Report - Johannesburg (2014)
Emerging City Report - Johannesburg (2014)ResearchFox
 
Tema 1.1.3.1 la administracion cientifica
Tema 1.1.3.1 la administracion cientificaTema 1.1.3.1 la administracion cientifica
Tema 1.1.3.1 la administracion cientificaDaniel Guerrero
 
TAYLOR _ FAYOL - UNIDAD 3
TAYLOR _ FAYOL - UNIDAD 3TAYLOR _ FAYOL - UNIDAD 3
TAYLOR _ FAYOL - UNIDAD 3hmonje9
 
Principles Of Design
Principles Of DesignPrinciples Of Design
Principles Of DesignPeter Wood
 

En vedette (13)

Super Curta (Nx Power Lite)
Super Curta (Nx Power Lite)Super Curta (Nx Power Lite)
Super Curta (Nx Power Lite)
 
Mechanisms of Armour Penetration
Mechanisms of Armour PenetrationMechanisms of Armour Penetration
Mechanisms of Armour Penetration
 
Question 7
Question 7Question 7
Question 7
 
CCNA certificate
CCNA certificateCCNA certificate
CCNA certificate
 
O que acontece quando falhamos no que é mais importante?
O que acontece quando falhamos no que é mais importante?O que acontece quando falhamos no que é mais importante?
O que acontece quando falhamos no que é mais importante?
 
Attendance 24th june 2016
Attendance 24th june 2016Attendance 24th june 2016
Attendance 24th june 2016
 
Mohamed mohi work proud2
Mohamed mohi work proud2Mohamed mohi work proud2
Mohamed mohi work proud2
 
Emerging City Report - Johannesburg (2014)
Emerging City Report - Johannesburg (2014)Emerging City Report - Johannesburg (2014)
Emerging City Report - Johannesburg (2014)
 
Características psicoevolutivas
Características psicoevolutivasCaracterísticas psicoevolutivas
Características psicoevolutivas
 
Marlon samir
Marlon samirMarlon samir
Marlon samir
 
Tema 1.1.3.1 la administracion cientifica
Tema 1.1.3.1 la administracion cientificaTema 1.1.3.1 la administracion cientifica
Tema 1.1.3.1 la administracion cientifica
 
TAYLOR _ FAYOL - UNIDAD 3
TAYLOR _ FAYOL - UNIDAD 3TAYLOR _ FAYOL - UNIDAD 3
TAYLOR _ FAYOL - UNIDAD 3
 
Principles Of Design
Principles Of DesignPrinciples Of Design
Principles Of Design
 

Similaire à Liferay france symposium 2012 - montée de version d’une instance liferay

Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Julien Dubois
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptMichael Akbaraly
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logicielsSylvain Leroy
 
Mise à niveau de Sharepoint 2007 vers Sharepoint 20102010
Mise à niveau de Sharepoint 2007 vers Sharepoint 20102010Mise à niveau de Sharepoint 2007 vers Sharepoint 20102010
Mise à niveau de Sharepoint 2007 vers Sharepoint 20102010Mario Leblond
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyFrançois Petitit
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicEmmanuel Hugonnet
 
Migrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds JavaMigrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds JavaCédric Leblond
 
Play Framework
Play FrameworkPlay Framework
Play FrameworkArmaklan
 
Drupagora - Les clés de la réussite d'un projet Drupal
Drupagora - Les clés de la réussite d'un projet DrupalDrupagora - Les clés de la réussite d'un projet Drupal
Drupagora - Les clés de la réussite d'un projet DrupalCore-Techs
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsFactoVia
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsAZUG FR
 
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineLa qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineInterface ULg, LIEGE science park
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+ekino
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsHugo Hamon
 
Ez18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshellEz18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshellgdigugli
 
cours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdfcours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdfSliimAmiri
 
Python application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgentsPython application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgentsNicolas Mussat
 
Une gestion efficace du changement de vos structures de données relationnelle...
Une gestion efficace du changement de vos structures de données relationnelle...Une gestion efficace du changement de vos structures de données relationnelle...
Une gestion efficace du changement de vos structures de données relationnelle...Olivier DASINI
 

Similaire à Liferay france symposium 2012 - montée de version d’une instance liferay (20)

Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
Mise à niveau de Sharepoint 2007 vers Sharepoint 20102010
Mise à niveau de Sharepoint 2007 vers Sharepoint 20102010Mise à niveau de Sharepoint 2007 vers Sharepoint 20102010
Mise à niveau de Sharepoint 2007 vers Sharepoint 20102010
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacy
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville Public
 
Migrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds JavaMigrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds Java
 
Maven et industrialisation du logiciel
Maven et industrialisation du logicielMaven et industrialisation du logiciel
Maven et industrialisation du logiciel
 
Play Framework
Play FrameworkPlay Framework
Play Framework
 
Drupagora - Les clés de la réussite d'un projet Drupal
Drupagora - Les clés de la réussite d'un projet DrupalDrupagora - Les clés de la réussite d'un projet Drupal
Drupagora - Les clés de la réussite d'un projet Drupal
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure Devops
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure Devops
 
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineLa qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec Jenkins
 
Ez18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshellEz18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshell
 
Octo Maven.pdf
Octo Maven.pdfOcto Maven.pdf
Octo Maven.pdf
 
cours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdfcours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdf
 
Python application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgentsPython application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgents
 
Une gestion efficace du changement de vos structures de données relationnelle...
Une gestion efficace du changement de vos structures de données relationnelle...Une gestion efficace du changement de vos structures de données relationnelle...
Une gestion efficace du changement de vos structures de données relationnelle...
 

Plus de Sébastien Le Marchand

Let's revive the Liferay Marketplace together - /dev/24 2021
Let's revive the Liferay Marketplace together - /dev/24 2021Let's revive the Liferay Marketplace together - /dev/24 2021
Let's revive the Liferay Marketplace together - /dev/24 2021Sébastien Le Marchand
 
Convert to liferay forms! - Liferay DEVCON 2021
Convert to liferay forms! - Liferay DEVCON 2021Convert to liferay forms! - Liferay DEVCON 2021
Convert to liferay forms! - Liferay DEVCON 2021Sébastien Le Marchand
 
Convertissez vos formulaires ! - Liferay France Symposium 2020
Convertissez vos formulaires ! - Liferay France Symposium 2020Convertissez vos formulaires ! - Liferay France Symposium 2020
Convertissez vos formulaires ! - Liferay France Symposium 2020Sébastien Le Marchand
 
Let’s discover and extend the Content Dashboard - /dev/24 2020
Let’s discover and extendthe Content Dashboard - /dev/24 2020Let’s discover and extendthe Content Dashboard - /dev/24 2020
Let’s discover and extend the Content Dashboard - /dev/24 2020Sébastien Le Marchand
 
Relever les défis techniques d'un site internet multi-pays et multilingue - L...
Relever les défis techniques d'un site internet multi-pays et multilingue - L...Relever les défis techniques d'un site internet multi-pays et multilingue - L...
Relever les défis techniques d'un site internet multi-pays et multilingue - L...Sébastien Le Marchand
 
Liferay Gogo Scripts - Liferay France User Group - meetup #13
Liferay Gogo Scripts -  Liferay France User Group - meetup #13Liferay Gogo Scripts -  Liferay France User Group - meetup #13
Liferay Gogo Scripts - Liferay France User Group - meetup #13Sébastien Le Marchand
 
Back from Liferay DEVCON 2018 (Liferay France User Group Meetup #10 - 15/11/2...
Back from Liferay DEVCON 2018 (Liferay France User Group Meetup #10 - 15/11/2...Back from Liferay DEVCON 2018 (Liferay France User Group Meetup #10 - 15/11/2...
Back from Liferay DEVCON 2018 (Liferay France User Group Meetup #10 - 15/11/2...Sébastien Le Marchand
 
Instances multiples : les pièges à éviter (Liferay User Group France)
Instances multiples : les pièges à éviter (Liferay User Group France)Instances multiples : les pièges à éviter (Liferay User Group France)
Instances multiples : les pièges à éviter (Liferay User Group France)Sébastien Le Marchand
 
Developing faster than ever (Liferay DEVCON 2017)
Developing faster than ever (Liferay DEVCON 2017)Developing faster than ever (Liferay DEVCON 2017)
Developing faster than ever (Liferay DEVCON 2017)Sébastien Le Marchand
 
Développement : mettez le turbo ! - Liferay France Symposium 2017
Développement : mettez le turbo ! - Liferay France Symposium 2017Développement : mettez le turbo ! - Liferay France Symposium 2017
Développement : mettez le turbo ! - Liferay France Symposium 2017Sébastien Le Marchand
 
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 20167 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016Sébastien Le Marchand
 
PhoneGap Paris Meetup #6 - Pix2know - Sencha Touch
PhoneGap Paris Meetup #6 - Pix2know - Sencha TouchPhoneGap Paris Meetup #6 - Pix2know - Sencha Touch
PhoneGap Paris Meetup #6 - Pix2know - Sencha TouchSébastien Le Marchand
 
Using MyBatis in Alfresco custom extensions - Alfresco Devcon 2012 - Berlin
Using MyBatis in Alfresco custom extensions - Alfresco Devcon 2012 - BerlinUsing MyBatis in Alfresco custom extensions - Alfresco Devcon 2012 - Berlin
Using MyBatis in Alfresco custom extensions - Alfresco Devcon 2012 - BerlinSébastien Le Marchand
 
Les2012 lightning talk_exporting_and_importing_company-level_data
Les2012 lightning talk_exporting_and_importing_company-level_dataLes2012 lightning talk_exporting_and_importing_company-level_data
Les2012 lightning talk_exporting_and_importing_company-level_dataSébastien Le Marchand
 

Plus de Sébastien Le Marchand (15)

Let's revive the Liferay Marketplace together - /dev/24 2021
Let's revive the Liferay Marketplace together - /dev/24 2021Let's revive the Liferay Marketplace together - /dev/24 2021
Let's revive the Liferay Marketplace together - /dev/24 2021
 
Convert to liferay forms! - Liferay DEVCON 2021
Convert to liferay forms! - Liferay DEVCON 2021Convert to liferay forms! - Liferay DEVCON 2021
Convert to liferay forms! - Liferay DEVCON 2021
 
Convertissez vos formulaires ! - Liferay France Symposium 2020
Convertissez vos formulaires ! - Liferay France Symposium 2020Convertissez vos formulaires ! - Liferay France Symposium 2020
Convertissez vos formulaires ! - Liferay France Symposium 2020
 
Let’s discover and extend the Content Dashboard - /dev/24 2020
Let’s discover and extendthe Content Dashboard - /dev/24 2020Let’s discover and extendthe Content Dashboard - /dev/24 2020
Let’s discover and extend the Content Dashboard - /dev/24 2020
 
Relever les défis techniques d'un site internet multi-pays et multilingue - L...
Relever les défis techniques d'un site internet multi-pays et multilingue - L...Relever les défis techniques d'un site internet multi-pays et multilingue - L...
Relever les défis techniques d'un site internet multi-pays et multilingue - L...
 
Liferay Gogo Scripts - Liferay France User Group - meetup #13
Liferay Gogo Scripts -  Liferay France User Group - meetup #13Liferay Gogo Scripts -  Liferay France User Group - meetup #13
Liferay Gogo Scripts - Liferay France User Group - meetup #13
 
Back from Liferay DEVCON 2018 (Liferay France User Group Meetup #10 - 15/11/2...
Back from Liferay DEVCON 2018 (Liferay France User Group Meetup #10 - 15/11/2...Back from Liferay DEVCON 2018 (Liferay France User Group Meetup #10 - 15/11/2...
Back from Liferay DEVCON 2018 (Liferay France User Group Meetup #10 - 15/11/2...
 
Recap Liferay France Symposium 2018
Recap Liferay France Symposium 2018Recap Liferay France Symposium 2018
Recap Liferay France Symposium 2018
 
Instances multiples : les pièges à éviter (Liferay User Group France)
Instances multiples : les pièges à éviter (Liferay User Group France)Instances multiples : les pièges à éviter (Liferay User Group France)
Instances multiples : les pièges à éviter (Liferay User Group France)
 
Developing faster than ever (Liferay DEVCON 2017)
Developing faster than ever (Liferay DEVCON 2017)Developing faster than ever (Liferay DEVCON 2017)
Developing faster than ever (Liferay DEVCON 2017)
 
Développement : mettez le turbo ! - Liferay France Symposium 2017
Développement : mettez le turbo ! - Liferay France Symposium 2017Développement : mettez le turbo ! - Liferay France Symposium 2017
Développement : mettez le turbo ! - Liferay France Symposium 2017
 
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 20167 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
 
PhoneGap Paris Meetup #6 - Pix2know - Sencha Touch
PhoneGap Paris Meetup #6 - Pix2know - Sencha TouchPhoneGap Paris Meetup #6 - Pix2know - Sencha Touch
PhoneGap Paris Meetup #6 - Pix2know - Sencha Touch
 
Using MyBatis in Alfresco custom extensions - Alfresco Devcon 2012 - Berlin
Using MyBatis in Alfresco custom extensions - Alfresco Devcon 2012 - BerlinUsing MyBatis in Alfresco custom extensions - Alfresco Devcon 2012 - Berlin
Using MyBatis in Alfresco custom extensions - Alfresco Devcon 2012 - Berlin
 
Les2012 lightning talk_exporting_and_importing_company-level_data
Les2012 lightning talk_exporting_and_importing_company-level_dataLes2012 lightning talk_exporting_and_importing_company-level_data
Les2012 lightning talk_exporting_and_importing_company-level_data
 

Liferay france symposium 2012 - montée de version d’une instance liferay

  • 1. Montée de version d’une instance Liferay Les clés du succès Sébastien Le Marchand Expert Technique – SQLI Group
  • 2. SQLI - Un modèle intégré avec 5 métiers SOLUTION | PROGICIELS | AGENCE DIGITALE | CONSEIL | INGÉNIERIE Aller de l’idée à l’accompagnement du changement Partenaire de Liferay Conseil / intégration / accompagnement à la mise en place de portails collaboratifs UNE STRUCTURE INTERNATIONALE 1800 collaborateurs CA 165 M€
  • 3. Agenda Etat des lieux et enjeux Mise à jour des développements spécifiques  En amont : réaliser des développements facilitant la mise à jour  Méthode de mise à jour des portions de code issues de la version précédente Problématiques avancées liées aux données  Réaliser une procédure de mise à jour de données spécifique  Migration de données multi-sources Conclusion
  • 4. Etat des lieux et enjeux
  • 5. Les ingrédients d’une montée de version… Mise à jour d’une instance = Mise à jour de la configuration + Mise à jour logiciel standard + Mise à jour standard des données + Mise à jour logiciel spécifique + Mise à jour spécifique des données
  • 6. … et la recette 1) Préparation  Adapter la configuration à la nouvelle version  Adapter les développements spécifiques à la nouvelle version 2) Déploiement  Installer une instance vierge dans la nouvelle version  Installer les plugins spécifiques (développements & configuration)  Connecter l’instance aux données existantes (DB + FS)  Démarrer…  Liferay met à jour automatiquement les données
  • 7. Plus de détails  Suivant les versions source et destination, il peut y avoir des spécificités dans la procédure : toujours se référer à la procédure officielle communiquée par Liferay  Les montées de version vers les service packs peuvent être évitées par l’usage des “Hotfixes”  Les fichiers portal-legacy-*.properties facilitent l’adaptation de la configuration  L’adaptation des développements spécifiques représente en général l’essentiel de l’effort à fournir
  • 8. Mise à jour des développements spécifiques
  • 9. Quels développements spécifiques ?  Plugins “Portlet” Mise à jour  Plugins “Theme” = 1. Build  correction erreurs 2. Deploy  correction erreurs  Plugins “Layout Template” 3. Test  correction erreurs  Plugins “Web” Mise à jour  Plugins “Hook” = 1. Inspection et adaptation du  Plugins “Ext” code source 2. Build  correction erreurs 3. Deploy  correction erreurs 4. Test  correction erreurs
  • 10. Hook & Ext : comment faciliter et sécuriser la mise à jour en amont ? Bonnes pratiques pour la réalisation de développements spécifiques :  Faire la chasse aux copier-collers qui devront être migrés  Isoler et délimiter les développements spécifiques
  • 11. Inclusion de la JSP originale  Pour des ajouts avant et/ou après le code original  Exemple : ajouter un bandeau en tête de la portlet de login Code spécifique Code spécifique Code original <%@ include file= "login.portal.jsp" %> /html/portlet/login/login.jsp
  • 12. Faire usage de l’héritage de classe  Concerne essentiellement les plugins “Ext”  Exemple : classe com.liferay.portal.util.PortalImpl PortalImpl <bean id="com.liferay.portal.util.PortalUtil" class=" ..."> <property name="portal"> +getHomeURL() <bean class=“....CustomPortalImpl" /> </property> </bean> CustomPortalImpl ext-spring.xml +getHomeURL()
  • 13. Faire usage de l’introspection  Pour accéder depuis un plugin à une classe du portail AssetUtil << introspection >> AssetUtil portal-impl.jar ROOT.war monplugin-hook.war PortalClassInvoker portal-service.jar  Procédé déjà utilisé nativement • com.liferay.portal.kernel.util.PrefsPropsUtil • com.liferay.portal.kernel.util.PropsUtil • …
  • 14. …encore un peu plus d’introspection  Pour accéder à une méthode privée Class clazz = … ; java.reflect.method m = clazz.getDeclaredMethod(…); … m.setAccessible(true); m.invoke(…); L’abus d’introspection peut être dangereux pour votre application
  • 15. Délimiter le code spécifique  Délimiter le code spécifique <!-- BEGIN CUSTOM CODE --> par des blocs de commentaires … • Ajouts … • Modifications <!-- END CUSTOM CODE --> • Suppressions  Déporter les blocs de taille importante dans des fichiers <!-- BEGIN CUSTOM CODE --> JSPF <%@ include file="mypage.jspf" %> <!-- END CUSTOM CODE -->
  • 16. Préserver le code issue de Liferay  Des copier-collers de code depuis Liferay resteront toujours inévitables dans certains cas • Dans certaines JSP • Dans certaines méthodes redéfinies  Ces portions de code  Ne doivent pas être reformatées  Ne doivent pas être refactorées  Doivent être délimitées par des commentaires (pour les classes Java)
  • 17. Méthode de mise à jour et outils  Mettre en regard • Le fichier natif de la version source • Le fichier modifié à partir de la version source • Le fichier natif de la version cible  Des outils adaptés • WinMerge • MeId • Kdiff3 • Araxis Merge • …  Adopter une méthode systématique • Plusieurs approches possibles
  • 19. Problématiques avancées liées aux données
  • 20. Mise à jour spécifique des données  Des données spécifiques peuvent être dépendantes d’une version de Liferay  Exemple : préférence de portlet référençant une image dans Liferay 6.0  Possibilité d’implémenter des “upgrade process” au sein des plugins spécifiques
  • 21. Migration de données multi-sources  Plusieurs instances Liferay sources en version X  Une instance Liferay cible en version Y  Procédure 1. Montée de version sur chaque instance source 2. Export des données concernées au format LAR 3. Import des fichiers LAR  Problématiques périphériques • Dates de création et de modification • Identité des utilisateurs
  • 23. Pour bien aborder ses montées de version  Réduire au maximum certains développements spécifiques  Appliquer des bonnes pratiques lors de la réalisation des développements  Trouver le bon rythme • Evaluer les avantages de chaque montée de version potentielle • Considérer les Hotfixes • Ne pas attendre jusqu’à devoir faire un saut de géant (4.3  6.1)  Suivre les procédures communiquées par Liferay  Gérer chaque montée de version comme un vrai projet
  • 24. Merci ! Des questions ? Sébastien Le Marchand SQLI Group slemarchand@sqli.com www.sqli.com @slemarchand www.entreprise-collaborative.fr