L’estimation de la mise à niveau de Magento consiste à collecter des informations sur les modifications apportées à l’installation que vous êtes sur le point de mettre à jour, à vérifier si ces modifications peuvent poser problème et à évaluer le temps requis pour les résoudre.
Toutes les modifications peuvent être littéralement divisées en non -core et in-core .
Les modifications hors cœur sont celles qui ne seront pas écrasées par la mise à niveau. Il s’agit d’ extensions tierces , de fichiers principaux placés dans une portée locale (app / code / local / Mage) et d’un thème personnalisé .
Les modifications in-core sont appliquées directement sur les fichiers de base de Magento (app / code / core), les fichiers de localisation (app / locale / en_US), les modèles de base et certaines choses comme les javascripts , les bibliothèques externes qui sont rarement personnalisées doivent néanmoins être prises en compte .
Modifications hors cœur
Extensions tierces
Lors des mises à niveau, les extensions tierces constituent la principale source de problèmes. Ce qui signifie que plus vous aurez d’extensions, vous aurez plus de temps pour les analyser.
La première chose à vérifier est de savoir si la fonctionnalité fournie par l'extension n'est pas encore implémentée dans une version de Magento vers laquelle vous effectuez la mise à niveau. Par exemple, certaines extensions telles que Yoast_CanonicalUrl
, Mxperts_CustomerAddress
ou Fontis_Wysiwyg
étaient largement utilisées dans Magento 1.3.xx et plus, mais font maintenant partie des fonctionnalités de base de Magento et ne sont plus nécessaires.
Ensuite, c'est une bonne idée de vérifier (demandez à votre client) si vous avez vraiment besoin de toutes les extensions que vous avez. Vous avez peut-être installé des extensions que vous n’avez jamais vraiment utilisées. Donc, à ce stade, il est bon de faire une sorte de nettoyage.
Il est ensuite important de vérifier la compatibilité de chacune des extensions restantes avec une version de Magento vers laquelle vous effectuez une mise à niveau. Si certaines extensions ne sont pas compatibles et qu'aucune extension similaire n'est disponible, vous aurez le choix difficile de perdre certaines fonctionnalités ou de modifier les extensions existantes pour les rendre compatibles.
Remarque: ne modifiez pas directement l'extension tierce, mais créez une nouvelle extension qui étendra une extension obsolète, puis définira une dépendance dans une XML d'amorçage de la nouvelle extension.
Une fois toutes ces tâches effectuées, l’analyse de chacune des extensions restantes peut être fournie. Il doit toujours commencer par l'examen du etc/config.xml
dossier. Il y a 3 choses à rechercher:
- La réécriture de classe n’est pas une technique propre en soi, mais dans certains cas, il n’ya pas d’autre solution. Donc, si la classe réécrite était modifiée dans la nouvelle version de Magento, cela pourrait être un problème potentiel.
- Les mises à jour de mise en page poseront probablement moins de problèmes avec votre mise à niveau, mais si l'extension fait référence à un bloc obsolète dans une nouvelle version de Magento, vous devrez vous en occuper.
- Les mises à jour SQL sont une source de problèmes fortement sous-estimée lors des mises à niveau. Le problème se produit lorsque l'extension tierce crée une clé étrangère faisant référence à un champ de la table Magento par défaut. En conséquence, ce champ est verrouillé contre les modifications. Et puis, si le script d'installation natif tente de mettre à jour ce champ, il échouera de manière silencieuse. Après cela, chaque script d’installation suivant faisant référence à ce champ plantera votre mise à niveau.
app / code / local / mage
Après avoir terminé vos extensions, il est temps de jeter un coup d'œil à votre app/code/local/Mage
répertoire. Vous trouverez ici les fichiers de base modifiés déplacés dans une local
étendue. Chacune d'entre elles vous coûtera sûrement des cheveux gris, car vous ne saurez jamais (si ce n'est vous qui les avez mis là) ce qui a été modifié et pour quelle raison. Vous devez donc comparer chacune d'elles avec une origine et migrer les fonctionnalités ajoutées vers le fichier correspondant de la nouvelle version.
Thème personnalisé
La dernière modification hors groupe est le thème personnalisé. Cela peut sembler être peu grave, mais en réalité, il s’agit d’une zone grise. Le thème de base de Magento est modifié de version en version et chaque thème personnalisé doit imiter certaines de ces modifications. Malheureusement, il n’ya pas de solution miracle pour déterminer ce qu’il faut rechercher et ce qui doit être migré. Préparez-vous donc à des surprises majeures et à des reproches mineurs après votre mise à niveau.
Modifications In-Core
Dans le monde parfait, il n'y en a pas. Mais lorsque vous obtenez une installation Magento après avoir été utilisée de manière abusive par des développeurs tiers, qui offrent beaucoup pour pas cher, vous pouvez vous attendre à tout. Les modifications dans le noyau sont donc celles qui seront écrasées au cours du processus de mise à niveau. Dans la plupart des cas, cela ne produira aucune erreur, mais vous perdrez la fonctionnalité ajoutée de manière aussi brutale.
Le seul moyen de détecter les modifications internes consiste à comparer tous les fichiers de votre installation Magento avec des fichiers propres de la même version. Je recommande de le faire avec git. Pourquoi? Tout simplement parce qu'il gérera toutes les nouvelles lignes et les espaces.
Même si votre installation de Magento n'est pas sous git, vous pouvez toujours copier vos fichiers dans un répertoire séparé, puis exécuter git init. Effectuez ensuite la validation initiale, copiez les fichiers «propres» Magento et exécutez-les git status
. Vous obtiendrez quelque chose comme ceci:
Maintenant, en fonction du nombre de fichiers modifiés, vous pouvez exécuter simultanément git diff
sur chaque fichier ou sur tout le lot. Cela vous donnera une référence complète de toutes les modifications apportées dans le cœur. Si vous avez une visualisation git telle que phpStorm, la vie est beaucoup plus facile pour vous:
Je suggère de le faire git diff > changes.txt
, vous aurez toujours une liste de modifications à la main.
Ayant la liste des modifications de base, vous pouvez estimer ce qui doit être transféré dans une nouvelle version et combien de temps il faudra pour le faire.
Maintenant, je voudrais donner quelques conseils pour une mise à niveau réelle. Ce processus est bien documenté, je ne vais donc pas écrire les commandes à exécuter ni les endroits où cliquer. Cependant, je veux mettre l'accent sur plusieurs choses importantes:
- Nous supposons que vous effectuez une mise à niveau dans votre environnement de développement. Exécuter une mise à niveau sur votre serveur de production est un suicide.
- Ne les laissez pas changer en production pendant la mise à niveau. Mettez votre Magento sous contrôle de version ou même des fichiers de verrouillage temporaires en écriture.
- Désactivez toutes les extensions tierces, mais notez celles qui ont été initialement désactivées afin de ne pas les activer par la suite.
- Vérifiez si un script de nettoyage Magento est en cours d'exécution sur le serveur. Sinon tronquer toutes les tables en commençant par
dataflow_*
, log_*
, report_*
.
- Revenir au thème par défaut lors de la mise à niveau.
Une fois le script de mise à niveau terminé:
- En faisant référence à ce que
changes.txt
vous avez fait avant de migrer, toutes les modifications dans le noyau qui méritent vraiment la migration.
- Migrer les
app/code/local/Mage
modifications trouvées avant la mise à niveau.
- Un par un, activez les extensions tierces.
- Remettez votre thème et comparez le résultat avec le serveur de production.
- Déployez en production une fois que vous êtes satisfait du résultat.
Conclusion
Je sais que tout cela semble effrayant, mais si vous effectuez régulièrement des mises à niveau, gardez votre noyau propre et installez des extensions uniquement auprès de fournisseurs en qui vous avez confiance et si vous en avez vraiment besoin, vous ne rencontrerez pas la plupart des difficultés décrites dans cet article. Gardez votre système Magento EcoSystem en bonne santé et vous serez récompensé.
Post Scriptum
Dans des cas très complexes, il est logique de tout recommencer avec une nouvelle installation de Magento, puis de migrer le thème et les fonctionnalités de votre magasin, étape par étape. Cela va certainement prendre du temps, mais à la fin, vous aurez un système Magento en bonne santé et pleinement conscient de ce qui se passe.