Ca y est, votre module commence à ressembler à quelque chose, et vous allez bientôt devoir le déployer sur d’autres plate-formes ou bien le rendre disponible à la communauté. Il est donc temps de lire cet article qui va vous expliquer comment packager votre module mais aussi comment répéter cette action facilement, par exemple à chaque nouvelle montée de version de votre module.
Création d’un package
On va y aller étape par étape. Cela commence dans la console d’administration, menu System => Magento Connect => Package Extensions.
Etape 1 : Package Info
On est dans le premier onglet. Vous devez fournir les informations suivantes:
Name : On s’en doute, il s’agit du nom que portera votre package. Seules les lettres, chiffres et underscore (_) sont autorisés. Vous pouvez par exemple choisir le nom « long » de votre module (ex: Nosymena_Helloworld). Ce nom sera utilisé dans « l’extension key » de votre extension si vous la déposez sur Magento Connect.
Channel: vous n’avez pas trop le choix, vous devez saisir ici « community« .
Supported releases: mon article concerne les packages pour Magento v1.5.0 et supérieur. Vous devez donc sélectionner « 1.5.0.0 & later »
Summary: petit descriptif de votre extension.
Description: descriptif plus complet de votre extension.
License: vous pouvez indiquer ici le nom de la licence à associer à votre extension. Par exemple « OSL v3.0″ correspond à la licence de Magento (Open Software Licence v3.0). Ou bien « commercial » si vous destinez votre extension à la vente. Voici une liste des licences possibles:
- Open Software License (OSL)
- Mozilla Public License (MPL)
- Massachusetts Institute of Technology License (MITL)
- GNU Lesser General Public License (LGPL)
- GNU General Public License (GPL)
- Berkeley Software Distribution License (BSDL)
- Apache Software License (ASL)
- Academic Free License (AFL)
- Commercial
License URI: L’URL décrivant la licence associée. Ex: http://www.opensource.org/licenses/osl-3.0.php
Etape 2 : Release Info
Release Version: votre extension est associée à une version. Indiquez la ici. Vous pouvez par exemple suivre le versionning que vous indiquez dans votre fichier de configuration etc/config.xml.
Release Stability: vous avez le choix entre Development, Alpha, Beta, Stable. Il s’agit en fait d’une information destinée à ceux qui vont installer votre extension… Si votre extension n’est pas en mode ‘Stable‘, vous pouvez d’ailleurs compléter cette information dans le descriptif de votre extension pour bien informer le futur utilisateur qu’il risque de rencontrer quelques bugs dans l’utilisation de celle-ci.
Notes: texte pour décrire ce qu’apporte cette version par rapport à la version précédente
Etape 3 : Authors
Donnez ici des informations sur le ou les auteurs de l’extension.
Si vous souhaitez déposer votre extension sur le site Magento Connect, le User et l’Email du premier auteur doivent correspondre au login/mail d’un contact identifié sur le site.
Etape 4 : Dependencies
PHP Version: votre extension nécessite peut-être une version particulière de PHP pour fonctionner. Indiquez là dans le champ « Minimum » (ex: 5.3.0). Comme Magento attend une version maximum, la valeur 6.0.0 peut être appropriée.
Extensions: de la même façon, si votre extension nécessite une librairie particulière de PHP pour fonctionner, indiquez là ici (ex: ‘zip’).
Packages: indiquez ici si votre extension nécessite un package particulier avant d’être installé. La liste de tous les packages présents sur votre système est donnée lorsque vous accédez à votre Magento Connect Manager.
Vous pouvez l’utilisez aussi si vous souhaitez avoir une version particulière de Magento. Il suffit pour cela de donner le nom « Mage_Core_Modules » comme nom de Package. La copie-écran ci-jointe montre comment restreindre l’installation de votre module aux versions de Magento comprises entre la 1.6.0 et la 1.7.
Etape 5 : Contents
Voici enfin le moment où vous allez indiquer les fichiers faisant partie de votre module. Pensez bien à tous les fichiers ! Voici une petite checklist:
- Tout le code présent dans votre module, dans app/code. Exemple: app/code/local/Nosymena/Helloworld
- Le fichier de layout de l’administration. Exemple: app/design/adminhtml/default/default/layout/helloworld.xml
- Les fichiers de template de l’administration. Exemple: app/design/adminhtml/default/default/template/helloworld
- Le fichier de layout de la partir front. Exemple: app/design/frontend/default/nosymena/layout/helloworld.xml
- Les fichiers de template de la partie front. Exemple: app/design/frontend/default/nosymena/template/helloworld
- Le fichier de configuration global, celui qui informe Magento de l’existence de votre module. Exemple: app/etc/modules/Nosymena_Helloworld.xml
- Les fichiers de traduction (tous les fichiers que vous avez créé dans app/locale)
- Les librairies/fichiers Javascript que vous avez déposés dans js. Exemple: js/nosymena
- Les librairies PHP que vous avez créées dans lib. Exemple: lib/nosymena
- Le skin que vous avez créé. Exemple: skin/frontend/default/nosymena
Il vous faut maintenant indiquer à Magento tous les fichiers que nous venons de lister. Pour nous aider, Magento a typé les contenus pour leur faire correspondre un début de chemin:
- Magento Local module file => indiquez ici les fichiers présents dans app/code/local
- Magento Community module file => indiquez ici les fichiers présents dans app/code/community
- Magento Core team module file => indiquez ici les fichiers présents dans app/code/core
- Magento User Interface (layouts, templates) => indiquez ici les fichiers présents dans app/design
- Magento Global Configuration => indiquez ici les fichiers présents dans app/etc
- Magento PHP Library file => indiquez ici les fichiers présents dans lib
- Magento Locale language file => indiquez ici les fichiers présents dans app/locale
- Magento Media library => indiquez ici les fichiers présents dans media
- Magento Theme Skin (Images, CSS, JS) => indiquez ici les fichiers présents dans skin
- Magento Other web accessible file => tout fichier à partir de la racine du site
- Magento PHPUnit test => indiquez ici les fichiers présents dans tests
- Magento other => tout fichier à partir de la racine du site
De cette façon, il ne vous reste plus qu’à indiquer dans le champ ‘Path‘ la suite du chemin, et dans le champ ‘Type‘ s’il s’agit d’un fichier unique ou de l’ensemble des fichiers et dossiers présents dans le chemin indiqué.
Etape 6 : Sauvegarder votre package
A tout moment, vous pouvez sauvegarder votre package et reporter sa génération à plus tard.
Si vous avez bien rempli tous les champs indiqués comme requis pas Magento (tous les champs avec une *) , cliquez sur le bouton « Save« . La configuration de votre package est sauvegardée dans un fichier XML portant le nom que vous avez donné à votre package, dans le répertoire var/connect. Exemple: var/connect/Nosymena_Helloworld.xml.
Génération d’un package
Si vous êtes bien passé par les 5 étapes précédents (la 6ème n’est pas obligatoire), vous pouvez maintenant générer votre extension en cliquant sur le bouton « Save Data and Create Package« .
Cela va générer 2 fichiers dans le dossier var/connect:
- le premier correspond à la configuration de votre package (c’est ce que nous avons vu en étape 6) et porte le nom du package avec l’extension « .xml ». Notez que vous pouvez modifier le nom du fichier en choisissant le bouton « Save As…«
- le second correspond au package. Il est nommé avec la concaténation du nom du package, sa version, et avec l’extension « .tgz ».
Si vous ouvrez le contenu du package, vous obtiendrez un fichier TAR, contenant l’ensemble des dossiers et fichiers que vous avez indiqué en étape 5, ainsi qu’un fichier package.xml, qui contient la configuration du package ainsi que le hash de l’ensemble des fichiers.
Chargement de la configuration d’un package
Le dernier onglet du module « Package Extensions » – appelé « Load Local Package » – vous permet de recharger des configurations que vous avez précédemment enregistrées. La liste qui s’affiche correspond aux fichiers de configurations présents dans le dossier var/connect.
Lorsque vous cliquez sur une des lignes représentant un package, la configuration associée se charge immédiatement.
Attention: seul le fichier de configuration est chargé! Le package, lui, n’est pas déployé!
De cette façon, vous pouvez facilement générer un package pour chaque nouvelle version que vous souhaitez diffuser/déployer.
La première fois, vous devez passer par les 5 étapes nécessaires à la création d’un fichier de configuration, puis sauvegarder et générer votre package.
Puis, à chaque changement de version de votre package, il ne vous reste plus qu’à :
- charger le fichier de configuration de votre package
- modifier les informations propres à cette release (onglet « Release Info »)
- vérifier que cette release n’entraine pas de nouvelles dépendances (onglet « Dependencies)
- ajouter si nécessaire de nouvelles informations sur le contenu (onglet « Contents »)
- sauvegarder et générer votre nouveau package (en cliquant sur le bouton « Save Data and Create Package« )
Déposer votre extension sur Magento Connect
Maintenant que votre extension est prête, vous pouvez la déposer sur Magento Connect pour en faire profiter les autres !
Qu’elle soit payante ou gratuite, pour déposer votre extension sur Magento Connect, vous devez avoir un compte créé sur le site Magento Connect, pour accéder ensuite à votre profil et à l’onglet « Developpers »: la fonctionnalité « Add New Extension » vous sera alors proposée.
Déploiement de votre package
Sans passer par le site Magento Connect, si vous souhaitez déployer votre package – sur un nouvel environnement, ou suite à une réinstallation de Magento – cela se passe dans le module Magento Connect Manager.
Au lieu d’indiquer l’extension key à installer comme vous pourriez le faire lorsque vous souhaitez installer une extension disponible sur Magento Connect, il vous faut plutôt regarder dans la partie « Direct package file upload »: un champ est à votre disposition pour indiquer le chemin vers votre package (le fichier .tgz).
Après l’appui sur le bouton Upload, votre package sera installé comme n’importe quelle extension !
Attention: si votre package est déjà installé ou bien si des fichiers de votre package sont déjà présents, l’installation ne pourra pas se faire !
Revenir au Tutoriel BackOffice