Vous êtes sur la page 1sur 24

Monte de version dune instance Liferay

Les cls du succs


Sbastien Le Marchand
Expert Technique SQLI Group

SQLI - Un modle intgr avec 5 mtiers


SOLUTION | PROGICIELS | AGENCE DIGITALE | CONSEIL | INGNIERIE

Aller de lide laccompagnement du changement

Partenaire de Liferay Conseil / intgration / 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 dveloppements spcifiques
En amont : raliser des dveloppements facilitant la mise jour Mthode de mise jour des portions de code issues de la version prcdente

Problmatiques avances lies aux donnes


Raliser une procdure de mise jour de donnes spcifique Migration de donnes multi-sources

Conclusion

Etat des lieux et enjeux

Les ingrdients dune monte de version


Mise jour dune instance = Mise jour de la configuration + Mise jour logiciel standard + Mise jour standard des donnes + Mise jour logiciel spcifique + Mise jour spcifique des donnes

et la recette
1) Prparation
Adapter la configuration la nouvelle version Adapter les dveloppements spcifiques la nouvelle version

2) Dploiement
Installer une instance vierge dans la nouvelle version Installer les plugins spcifiques (dveloppements & configuration) Connecter linstance aux donnes existantes (DB + FS) Dmarrer
Liferay met jour automatiquement les donnes

Plus de dtails
Suivant les versions source et destination, il peut y avoir des spcificits dans la procdure : toujours se rfrer la procdure officielle communique par Liferay
Les montes de version vers les service packs peuvent tre vites par lusage des Hotfixes

Les fichiers portal-legacy-*.properties facilitent ladaptation de la configuration


Ladaptation des dveloppements spcifiques reprsente en gnral lessentiel de leffort fournir

Mise jour des dveloppements spcifiques

Quels dveloppements spcifiques ?


Plugins Portlet
Plugins Theme Plugins Layout Template Plugins Web Plugins Hook
1. Mise jour = 1. Build correction erreurs 2. Deploy correction erreurs 3. Test correction erreurs

Plugins Ext

2. 3. 4.

Mise jour = Inspection et adaptation du code source Build correction erreurs Deploy correction erreurs Test correction erreurs

Hook & Ext : comment faciliter et scuriser la mise jour en amont ?


Bonnes pratiques pour la ralisation de dveloppements spcifiques : Faire la chasse aux copier-collers qui devront tre migrs

Isoler et dlimiter les dveloppements spcifiques

Inclusion de la JSP originale


Pour des ajouts avant et/ou aprs le code original Exemple : ajouter un bandeau en tte de la portlet de login
Code spcifique Code original Code spcifique

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

/html/portlet/login/login.jsp

Faire usage de lhritage de classe


Concerne essentiellement les plugins Ext
Exemple : classe com.liferay.portal.util.PortalImpl
PortalImpl +getHomeURL() CustomPortalImpl
<bean id="com.liferay.portal.util.PortalUtil" class=" ..."> <property name="portal"> <bean class=....CustomPortalImpl" /> </property> </bean>

+getHomeURL()

ext-spring.xml

Faire usage de lintrospection


Pour accder depuis un plugin une classe du portail
AssetUtil
portal-impl.jar ROOT.war monplugin-hook.war
<< introspection >>

AssetUtil

PortalClassInvoker
portal-service.jar

Procd dj utilis nativement

com.liferay.portal.kernel.util.PrefsPropsUtil com.liferay.portal.kernel.util.PropsUtil

encore un peu plus dintrospection


Pour accder une mthode prive
Class clazz = ; java.reflect.method m = clazz.getDeclaredMethod(); m.setAccessible(true); m.invoke();

Labus dintrospection peut tre dangereux pour votre application

Dlimiter le code spcifique


Dlimiter le code spcifique par des blocs de commentaires Ajouts Modifications Suppressions
<!-- BEGIN CUSTOM CODE --> <!-- END CUSTOM CODE -->

Dporter les blocs de taille importante dans des fichiers JSPF

<!-- BEGIN CUSTOM CODE --> <%@ include file="mypage.jspf" %> <!-- END CUSTOM CODE -->

Prserver le code issue de Liferay


Des copier-collers de code depuis Liferay resteront toujours invitables dans certains cas
Dans certaines JSP Dans certaines mthodes redfinies

Ces portions de code


Ne doivent pas tre reformates Ne doivent pas tre refactores Doivent tre dlimites par des commentaires (pour les classes Java)

Mthode 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 adapts


WinMerge MeId Kdiff3 Araxis Merge

Adopter une mthode systmatique


Plusieurs approches possibles

Exemple avec WinMerge

Problmatiques avances lies aux donnes

Mise jour spcifique des donnes


Des donnes spcifiques peuvent tre dpendantes dune version de Liferay Exemple : prfrence de portlet rfrenant une image dans Liferay 6.0
Possibilit dimplmenter des upgrade process au sein des plugins spcifiques

Migration de donnes multi-sources


Plusieurs instances Liferay sources en version X
Une instance Liferay cible en version Y Procdure
1. Monte de version sur chaque instance source 2. Export des donnes concernes au format LAR 3. Import des fichiers LAR

Problmatiques priphriques
Dates de cration et de modification Identit des utilisateurs

Conclusion

Pour bien aborder ses montes de version


Rduire au maximum certains dveloppements spcifiques
Appliquer des bonnes pratiques lors de la ralisation des dveloppements Trouver le bon rythme
Evaluer les avantages de chaque monte de version potentielle Considrer les Hotfixes Ne pas attendre jusqu devoir faire un saut de gant (4.3 6.1)

Suivre les procdures communiques par Liferay Grer chaque monte de version comme un vrai projet

Merci !

Des questions ?

Sbastien Le Marchand
slemarchand@sqli.com @slemarchand

SQLI Group
www.sqli.com www.entreprise-collaborative.fr

Vous aimerez peut-être aussi