Prestashop : Simplifier les migrations de version avec une commande console

Comme vous avez sans doute pu le suivre sur mes derniers articles sur le blog, j’essaye d’automatiser au maximum toutes les actions lors du déploiement des sites Prestashop.
Si besoin je vous renvoie vers la série d’articles ici : https://www.h-hennes.fr/blog/2023/09/16/prestashop-deploiement-continu-initialisation-du-projet/

Il y’a cependant encore un point qui me posait pas mal problème c’est les mises à jour de version de Prestashop.
Pour les mises à jour mineures, l’utilisation du module autoupgrade fait tout à fait l’affaire, mais il n’est pas pratique à utiliser dans car il est nécessaire de le lancer directement sur l’instance pour réaliser les différentes mises à jour.

Avec un workflow standard de CI/CD ce n’est pas possible de travailler de cette manière.
Les fichiers changés peuvent facilement être suivis via git, mais il est toujours nécessaire d’appliquer les mises à jour de la base de données.
Et le module autoupgrade ne permets pas à ma connaissance de le faire facilement

Je n’ai pas trouvé de solution existante et pratique pour faire cela, mais comme souvent avec Prestashop la création d’un module permets de répondre facilement à la problématique.…

Prestashop : Simplifier les migrations de version avec une commande console Lire la suite »

FOP day #4 à Marseille les 2,3 avril

L’association Friends of Presta dont je fait partie organise son 4 ème FOP Day les 2 et 3 avril 2024 à Marseille.
Après 3 première éditions très réussies à Poitiers / Toulouse et Lyon, place à Marseille cette année et au MUCEM pour ne rien gâcher 🙂 !

Une occasion de plus d’échanger autour des problématiques techniques et de l’écosystème Prestashop.

Pour ne rien gâcher j’ai la chance d’animer une master class autour de la CI/CD et des tests 🙂

Fop day 2024

Voici le programme de cette année :

Master Class – Mardi 2 Avril matin (incluses dans le pack FopDays)

  • 8h45 – 9h15 : Accueil MasterClass
  • 9h15 – 9h45 : Master Class #1 -Présentation de PrettyBlocks Guillaume Batier
  • 9h45 – 10h30 : Master Class #2 – Démarrer dans le CI/CD et les tests UI Hervé Hennes
  • 10h30 – 10h45 : Pause
  • 10h45 – 11h30 Master Class #3 – Il n’y a pas que GPT dans la vie ! Apprenez à créer un module de recommandation basé sur un modèle d’IA éduqué en live sur les données de votre boutique by Louis Authier
  • 11h30 – 12h15 : Master Class #4 – Web performance, chouchouter son TTFB

Fop Days 2024 – Mardi 2 Avril après midi + soirée + Mercredi 3 Avril

Mardi après midi

  • 13h30 – 14h00 : Accueil
  • 14h00 – 14h15 : Conférence d’ouverture par le bureau FoP
  • 14h15 – 15h00 : Conférence #1 – L’open source : licences, enjeux, business, IA par Antoine Thomas
  • 15h00 – 15h45  : Conférence #2 : Cybersécurité & qualité par Vincent Guesnard & Clotaire Renaud
  • 15h45 – 16h :  Pitchs
  • 16h15 – 16h30 : Pause
  • 16h30 – 17h15 : Conférence #3 : Les différentes mécaniques d’intégration avec PrestaShop – modules, framework Built For…use cases, avantages, services de type saas par Dimitri Mouillard
  • 17h15 – 18h : Conférence #4 : Comment Ocarat monitore et debug la prod Jérôme Weill
  • 18h – 18h15 : Pitchs
  • 18h15 – 19h00 : Questions / Réponses avecvPrestaShop SA – Eric Sénéchal Managing Director + Clément Paillasse CPO + Olivier Fontenelle CTO
  • 19h – 19h30 : Pause
  • 19h30 – 20h15 : FoP Awards
  • 20h15 – 2h00  : Soirée de Gala – Cocktail et animation jusqu’à 1h

Mercredi matin :

  • 9h – 9h30 : Accueil
  • 9h30 – 10h15 : Conférence #5 :  CRO par Sébastien Tortu
  • 10h15 – 11h : Conférence #6 : Tester son PrestaShop et ses modules par Jonathan Danse
  • 11h00 – 11h15 :Pause
  • 11h15 – 11h30 : Pitchs
  • 11h30 – 12h15 : Conférence #7 : SEO : Etude d’un cas pratique de A à Z.

FOP day #4 à Marseille les 2,3 avril Lire la suite »

Magento 2 : Mute logs Add of item with id … and other useless in developement

Note rapide sur comment réduire au silence les logs du module Magento_Backend qui remplis le fichier system.log  avec des centaines d’entrées inutiles du type

[2024-02-10T17:13:48.877379+00:00] main.INFO: Add of item with id Magento_Sales::sales was processed [] []
[2024-02-10T17:13:48.878055+00:00] main.INFO: Add of item with id Magento_Sales::sales_operation was processed [] []

Pareil pour moi qui fait essentiellement du développement back office pour tous les logs du type

[2024-02-13T10:54:24.978175+00:00] report.INFO: Broken reference: the ‘catalog.leftnav’ element cannot be added as child to ‘sidebar.main’, because the latter doesn’t exist [] []

Cela  noie les informations intéressantes d’autant que c’est une information qui n’est pas très utile.

Pour masquer ça la méthode la plus simple est de faire un fichier patch, avec le contenu suivant  :
Dans un fichier qui s’appelerais par exemple : LOCAL-mute-useless-logs.patch

diff --git a/vendor/magento/framework/View/Layout/Data/Structure.php b/vendor/magento/framework/View/Layout/Data/Structure.php
--- a/vendor/magento/framework/View/Layout/Data/Structure.php
+++ b/vendor/magento/framework/View/Layout/Data/Structure.php
@@ -122,10 +122,10 @@
                 $siblingParentName = $this-getParentId($sibling);
                 if ($parentName !== $siblingParentName) {
                     if ($this-state-getMode() === State::MODE_DEVELOPER) {
-                        $this-logger-info(
+                        /*$this-logger-info(
                             "Broken reference: the '{$childName}' tries to reorder itself towards '{$sibling}', but " .

Magento 2 : Mute logs Add of item with id … and other useless in developement Lire la suite »

Prestashop : Migrer les hooks dépréciés des modules

Il existe depuis très longtemps dans le fonctionnement des hooks de prestashop une fonction d’alias qui permets de mettre à jour le nom d’un hook tout en maintenant la compatibilité avec son ancien nom.
Le meilleur exemple de cette fonctionnalité est le hook header qui a été remplacé par displayHeader depuis très longtemps mais qui continue à fonctionner.
Ceci fonctionnait très bien et continue d’ailleurs de fonctionner, mais depuis la version 8.1 de Prestashop , chaque appel à un hook à un ancien alias va générer une erreur de log sur le serveur.
De ce type :

The hook « header » is deprecated, please use « displayHeader » instead in module « moduleName »

En fonction du nombre de modules concernés on peut vite remplir son serveur avec des milliers de lignes inutiles.

Plusieurs solution pour corriger ce point.


Quick & dirty et déconseillée  :  Commenter les lignes suivantes dans la méthode exec de la classe Hook ( via un override )

// We throw an error - aliases are deprecated.

Prestashop : Migrer les hooks dépréciés des modules Lire la suite »

Prestashop : Retour sur la première Developer Conference

La semaine dernière s’est déroulé la première conférence des développeurs Prestashop organisée directement par l’éditeur.

L’occasion de rencontrer de nombreux développeurs de l’éco-système, des agences, des freelances et éditeurs de module, dont de nombreux membres de l’association Friends Of Presta 🙂

Durant ces journée nous avons pu voir des conférences très intéressantes autour de nos problématiques communes telles que :

  • La mise en place de stratégie CI/CD
  • Les bonnes pratiques de développement de modules
  • Les mises à jour automatiques de modules via github
  • Le nouveau thème graphique HummingBird, et l’outil de gestion de block PrettyBlock
  • Les bonnes pratiques de sécurité dans la construction de vos modules
  • ….
  • Des échanges francs et direct avec les équipes de Prestashop sur la santé du projet et les évolutions en cours et à venir

Mon seul regret est de ne pas avoir pu suivre toutes les conférences, car il y’en avait 2 en même temps !

A l’issue de cette conférence, les retours sont très positifs avec une volonté commune entre l’éditeur et l’écosystème pour avancer ensemble vers les nouveaux défis qui attendent Prestashop pour les années à venir.…

Prestashop : Retour sur la première Developer Conference Lire la suite »

Prestashop : Hhmodule manager, fonctionnement technique et extension

Dans ma série d’articles précédents sur la mise en place de la CI/CD sur Prestashop, j’ai présenté une étape qui permets d’automatiser le déploiement de changements de modules et de configuration.
Celle-ci est géré via le module hhmodulesmanager, dont j’ai également présenté le fonctionnement basique qui est disponible dans cet article : Prestashop : Comment limiter les interactions manuelles avec le déploiement continu
Ce module gère nativement les actions suivantes :

  • Installation / Désinstallation / Activation / Désactivation / Mise à jour de module
  • Ajout / Mise à jour / Suppression de configuration

En revanche avec sa conception il peut servir de base technique pour gérer pleins d’autres actions, telles que  la Création/Modification/Suppression d’entités spécifiques…
Nous verrons plus loin comment le mettre en place.
Tout d’abord voici le fonctionnement technique du module et les notions importantes.
Pour rappel pour vous télécharger le module (gratuitement) sur la boutique ici :
Pensez à vous abonnez aux mises à jour de celui-ci pour être informés de la sortie des dernières versions 🙂

Télécharger le module complet ( et gratuit ) sur la boutique

Objet « Change »

Chaque action effectuée dans la back office est retranscrite sous la forme d’un objet « Changement » qui est une instance de la classe Change.…

Prestashop : Hhmodule manager, fonctionnement technique et extension Lire la suite »

Prestashop : Est-ce que mon site fonctionne toujours après ma livraison de code.

Cet article est le 5ème de la série sur le déploiement et l’intégration continu dans Prestashop.
Les autres articles de cette série sont les suivants :

Pour finir nos étapes de déploiement continu, une question se pose toujours après la livraison du code.
Est-ce que mon site fonctionne toujours ?
Est-ce que le module que j’ai installé ne casse rien ?

Pour répondre à cette question, il est souvent nécessaire de faire des tests manuels des parcours critiques.
C’est long et répétitif, mais nous allons voir à travers cette étape comment mettre en place des tests fonctionnels qui vont vérifier ce comportement pour nous 🙂

Pour cela nous allons utiliser la librairie playwright : https://playwright.dev/ 

Playwright

Cette librairie est utilisée par Prestashop pour faire l’ensemble des tests automatisés de la solution.…

Prestashop : Est-ce que mon site fonctionne toujours après ma livraison de code. Lire la suite »

Prestashop : Comment limiter les interactions manuelles avec le déploiement continu

Cet article est le 4ème de la série sur le déploiement et l’intégration continu dans Prestashop.
Les autres articles de cette série sont les suivants :

Un point relativement pénible avec Prestashop et qu’il n’existe pas nativement de solution automatisée pour installer / mettre à jour / désinstaller des modules, et pour déployer des configurations.

Ce qui fait que pour chaque déploiement de code, il est nécessaire de se rendre sur l’environnement cible  ( préproduction ou production ) et de réaliser manuellement les actions d’installations et mises à jour de modules, ainsi que l’application des configurations.
Il est donc nécessaire pour une action de la réaliser manuellement sur tous ces environnements.
Ceci est forcément source d’erreurs ou d’oublis, c’est pourquoi il serait beaucoup plus simple que tout se passe tout seul.…

Prestashop : Comment limiter les interactions manuelles avec le déploiement continu Lire la suite »

Prestashop : Déploiement continu, vérifier la qualité du code

Cet article est le 3ème de la série sur le déploiement et l’intégration continu dans Prestashop.
Les autres articles de cette série sont les suivants :

État des lieux

En préalable de cette étape nous allons ajouter un nouveau module prestashop de mauvaise qualité et avec une erreur de syntaxe php.
C’est volontairement ce qu’il ne faut pas faire 🙂

Pour faire ça simplement vous pouvez utiliser l’outil prestashopConsole qui est disponible ici : https://github.com/nenes25/prestashop_console
Et créer un module basique de test hhtestci  via la commande suivante :
php prestashopConsole.phar module:generate:module hhtestci

Dans ce module rajouter n’importe quelle erreur php, commiter et envoyer la modification dans git, puis faire une merge request comme nous l’avons vu dans l’étape précédente.
Dans le code de la merge request, rien ne nous indique qu’il y’a une erreur.…

Prestashop : Déploiement continu, vérifier la qualité du code Lire la suite »

Prestashop : Déploiement continu, qui peut livrer du code et ou

Cet article est le 2ème de la série sur le déploiement et l’intégration continu dans Prestashop.
Les autres articles articles de cette série sont les suivants :

Configuration initiale

Cette étape va surtout vous concerner si vous travaillez en équipe sur les projets et/ou si vous faites intervenir ponctuellement des intervenants externes.
Dans le cas ou vous travaillez tout seul, ce n’est pas forcément nécessaire mais c’est tout de même une bonne pratique.

Dans le cadre de mes projets j’ai toujours 3 environnements :

  1. Environnement local
  2. Environnement de préproduction ( branche git dev )
  3. Environnement de production ( branche git master )

Au niveau de git, le workflow utilisé est le suivant :

Toute nouvelle fonctionnalité est faite d’abord en local, dans une nouvelle branche, issue de master.…

Prestashop : Déploiement continu, qui peut livrer du code et ou Lire la suite »