Spécifications techniques

Répertoires de travail du plugin

Les données gérées par le plugin sont localisées dans la webapp dans le répertoire plugins/updater. Elles sont réparties dans 3 répertoires :

  • backup contient la dernière sauvegarde des plugins selon une arborescence structurée de type : backup/plugin/webapp
  • downloaded contient les packages d'installation téléchargés selon une arborescence structurée de type : backup/plugin/version/[webapp | sql].
  • deploy contient les fichiers à installer lors du prochain redémarrage selon une arborescence structurée de type : deploy/plugin/[webapp | sql]

Les sous-répertoires webapp contiennent les fichiers tels qu'ils doivent être déployés dans la webapp selon la même arborescence.
Les sous-répertoires sql contiennent les fichiers scripts SQL à exécuter. Ils sont exécutés à l'installation par ordre alphabétique.

    webapp-root
         |
         ----WEB-INF
                |
                ----plugins
                       |
                       ---- updater
                               |
                               |---- backup
                               |        |
                               |        |---- plugin1
                               |        |        |
                               |        |        ---- webapp
                               |        |                |
                               |        |                ---- ...
                               |        |---- plugin2
                               |        ...
                               |
                               |
                               |---- downloaded
                               |        |
                               |        |---- plugin1
                               |        |        |
                               |        |        |---- version1
                               |        |        |        |
                               |        |        |        |---- webapp
                               |        |        |        |      |
                               |        |        |        |      ---- ...
                               |        |        |        |
                               |        |        |         ---- sql
                               
                               |        |        |---- version2
                               |        |        |        |
                               |        |        |        ---- webapp
                               |        |        |        |       |
                               |        |        |        |       ---- ...
                               |        |        |        |
                               |        |        |         ---- sql
                               |        |        |
                               |        |                               
                               |        |---- plugin2
                               |        ...
                               |
                               |
                               |---- deploy
                               |        |
                               |        |---- plugin1
                               |        |        |
                               |        |        ---- webapp
                               |        |        |        |
                               |        |        |        ---- ...
                               |        |        |
                               |        |        ---- sql
                               |        |
                               |        |---- plugin2
                               |        ...
                               |
                               |

Format des fichiers catalogues

Le format est illustré par l'exemple ci-dessous :

<?xml version="1.0" encoding="ISO-8859-1"?>

<catalog>
    <plugins>
        <plugin>
            <name>digglike</name>
            <description>Vote et suggestion</description>
            <version>2.0.3</version>
            <author>Mairie de Paris</author>
            <url-homepage>http://fr.lutece.paris.fr/fr/jsp/site/Portal.jsp?document_id=505&portlet_id=140</url-homepage>
            <url-download>http://localhost:8080/lutece/plugins/updater/digglike-upd-2.0.3.zip</url-download>
            <upgrades>
                <upgrade>
                    <version-from>2.0.2</version-from>
                    <critical>0</critical>
                    <url-upgrade-download>http://localhost:8080/lutece/plugins/updater/digglike-upd-2.0.2-2.0.3.zip</url-upgrade-download>
                    <url-release-notes>http://dev.lutece.paris.fr/jira/browse/LUTECE?report=com.atlassian.jira.plugin.system.project:changelog-panel</url-release-notes>
                </upgrade>
            </upgrades>
        </plugin>
        <plugin>
            <name>contact</name>
            <description>Formulaire de contact</description>
            <version>2.0.12</version>
            <author>Mairie de Paris</author>
            <url-homepage>http://fr.lutece.paris.fr/fr/jsp/site/Portal.jsp?document_id=505&portlet_id=140</url-homepage>
            <url-download>http://localhost:8080/lutece/plugins/updater/contact-upd-2.0.12.zip</url-download>
            <upgrades>
                <upgrade>
                    <version-from></version-from>
                    <critical>2.0.11</critical>
                    <url-upgrade-download>http://localhost:8080/lutece/plugins/updater/contact-upd-2.0.11-2.0.12.zip</url-upgrade-download>
                    <url-release-notes>http://dev.lutece.paris.fr/jira/browse/LUTECE?report=com.atlassian.jira.plugin.system.project:changelog-panel</url-release-notes>
                </upgrade>
            </upgrades>
        </plugin>
    </plugins>
</catalog>

Structure des packages

Un package d'installation ou de mise à jour est une archive (Zip) contenant un répertoire webapp et éventuellement un répertoire sql si des manipulations SQL sont nécessaires pour l'installation ou la mise à jour.

Détail des opérations d'installation

Installation en mode script externe (updater-library)

Le module updater-library peut être utilisé en mode ligne de commande ou par un script pour réaliser les opérations d'installation ou de mise à jour. Il ne nécessite pas le noyau Lutece et fait appel à un minimum de dépendences (log4j, c3p0, ...). Son mode fonctionnement est le suivant :

Recherche sous le répertoire deploy si des plugins sont présents. Dans l'affirmative, il va regarder si le plugin est déjà installé pour procéder éventuellement à sa suppression. Celle-ci commence par le backup des fichiers du plugins dans le répertoire backup.

Important : Les données en base du plugin ne sont pas sauvegardées.

Une fois le backup terminé, la suppression commence. Elle se fait en supprimant les fichiers selon les patterns correspondant aux normes de nommage des plugins (le respect des normes est donc essentiel pour un nettoyage correct).

Important : Le serveur de la webapp doit être arrêté pour que les fichiers puissent être correctement supprimés (notamment les jar).

Important : Les données en base du plugin ne sont pas supprimées.

Important : Les données fichiers du plugins se trouvant sous plugins/[plugin]/ ne sont pas supprimées.

A l'issue de la suppression, le module copie tous les fichiers de la branche webapp du plugin et exécute par ordre alphabétique tous les scripts de la branche sql.

Important : Les données fichiers du plugins se trouvant sous plugins/[plugin]/ ne sont pas supprimées.

Important : Si l'installation s'est bien terminée, les données du répertoire deploy sont effacées.

Installation en mode intégré à la webapp

Ce mode réalise les mêmes opérations que le mode précédent. Cependant, étant donné que la suppression des fichiers nécessite l'arrêt du serveur, il requiert de configurer, dans le fichier core_context.xml, les services UpdaterStartupService et UpdaterShutdownService. Ces deux services réaliseront respectivement backup/suppression à l'arrêt du serveur et installation au démarrage.