[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"theme-db":3,"$fKnz2vuX4bZz1LbUTiuFsvSZ3e07l5_5fqNYp4Tzdhi8":22,"$fgXwB_3F0wmJb7hMiDulVqc0VGxIRJPimOC2WeIUH8kY":103,"megamenu":117,"footer-db":174,"header-db":192,"$fwxVZ4gnvxy8wDS1x9-wuUfMhFwgOu7p0mTxWI27DE6o":203,"$faeHPzaiD_hEe1mQOpr6YeCaHAcCFNcN5Rj7UbNTmwDw":260,"$fEerXPUH0WaautlzacsGrqSwCRuwEG2nRAHy2ffpdrsM":261},{"theme":4},{"colors":5,"typography":13,"ui":17,"defaultColorMode":21},{"primary":6,"secondary":7,"background":8,"foreground":9,"muted":10,"headerBg":11,"footerBg":12,"topBarBg":9,"topBarText":11},"#4F46E5","#0D9488","#F9FAFB","#111827","#6B7280","#ffffff","#020617",{"fontFamily":14,"fontUrl":15,"baseFontSize":16},"Inter, system-ui, sans-serif","https:\u002F\u002Ffonts.googleapis.com\u002Fcss2?family=Inter:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,700;0,800;0,900;1,400;1,700&display=swap","16px",{"borderRadius":18,"contentWidth":19,"shadow":20},"lg","7xl",true,"light",{"columns":23},[24,40,70,91],{"title":25,"links":26},"Plateforme",[27,31,34,37],{"label":28,"href":29,"external":30},"Offre Starter (2 500 €)","\u002Foffre-starter",false,{"label":32,"href":33,"external":30},"Devenir Ambassadeur","\u002Fambassadeur",{"label":35,"href":36,"external":30},"Modules PrestaShop","\u002Fmodules",{"label":38,"href":39,"external":20},"CodeMyShop.com","https:\u002F\u002Fcodemyshop.com",{"title":41,"links":42},"Le Synedre",[43,46,49,52,55,58,61,64,67],{"label":44,"href":45,"external":30},"L'histoire","\u002Fsynedre",{"label":47,"href":48,"external":30},"Constitution","\u002Fsynedre\u002Fconstitution",{"label":50,"href":51,"external":30},"L'équipe","\u002Fequipe",{"label":53,"href":54,"external":30},"Le réacteur en direct","\u002Freacteur",{"label":56,"href":57,"external":30},"Le Drill (entraînement)","\u002Fdrill",{"label":59,"href":60,"external":30},"Protocole de réunion","\u002Fsynedre\u002Freunion",{"label":62,"href":63,"external":30},"Les agents IA","\u002Fagents-ia",{"label":65,"href":66,"external":30},"La Conduite","\u002Fsynedre\u002Fconduite",{"label":68,"href":69,"external":30},"Charte plateforme","\u002Fsynedre\u002Fcharte",{"title":71,"links":72},"Ressources",[73,76,79,82,85,88],{"label":74,"href":75,"external":30},"Blog","\u002Fblog",{"label":77,"href":78,"external":30},"Academy","\u002Facademy",{"label":80,"href":81,"external":30},"Dictionnaire","\u002Fdictionnaire",{"label":83,"href":84,"external":30},"Expertise PrestaShop","\u002Fexpertise",{"label":86,"href":87,"external":30},"Flywheel","\u002Fflywheel",{"label":89,"href":90,"external":30},"Manifeste","\u002Fmanifeste",{"title":92,"links":93},"À propos",[94,97,100],{"label":95,"href":96,"external":30},"Alexandre Carette","\u002Fa-propos",{"label":98,"href":99,"external":30},"Dossier de presse","\u002Fpresse",{"label":101,"href":102,"external":30},"Contact","\u002Fcontact",{"academy":104,"blog":105,"expertise":116},[],[106,110,113],{"title":107,"url":108,"type":109},"PrestaShop Headless ou Shopify : pourquoi bâtir son propre Hub","\u002Fblog\u002Fprestashop\u002Fdeveloppement\u002Fheadless-vs-shopify-comparatif","blog",{"title":111,"url":112,"type":109},"Construire une usine à contenu SEO avec PrestaShop, Claude, Python","\u002Fblog\u002Fprestashop\u002Fdeveloppement\u002Fpipeline-seo-claude-python",{"title":114,"url":115,"type":109},"API WebService PrestaShop : guide complet pour l'intégrer en 2026","\u002Fblog\u002Fprestashop\u002Fdeveloppement\u002Fapi-webservice-prestashop-guide-complet",[],{"items":118},[119,128,134,140,148,156,162,168],{"id":120,"type":121,"label":122,"href":84,"icon":124,"description":124,"badge":124,"groupTitle":124,"style":124,"gridColumns":124,"cssClass":124,"psCategoryId":124,"showPsChildren":30,"position":125,"children":126,"psChildren":127},41,"link",{"fr":123},"Expertise",null,0,[],[],{"id":129,"type":121,"label":130,"href":75,"icon":124,"description":124,"badge":124,"groupTitle":124,"style":124,"gridColumns":124,"cssClass":124,"psCategoryId":124,"showPsChildren":30,"position":131,"children":132,"psChildren":133},42,{"fr":74},1,[],[],{"id":135,"type":121,"label":136,"href":36,"icon":124,"description":124,"badge":124,"groupTitle":124,"style":124,"gridColumns":124,"cssClass":124,"psCategoryId":124,"showPsChildren":30,"position":137,"children":138,"psChildren":139},43,{"fr":35},2,[],[],{"id":141,"type":121,"label":142,"href":144,"icon":124,"description":124,"badge":124,"groupTitle":124,"style":124,"gridColumns":124,"cssClass":124,"psCategoryId":124,"showPsChildren":30,"position":145,"children":146,"psChildren":147},44,{"fr":143},"Outils IA","\u002Foutils-ia",3,[],[],{"id":149,"type":121,"label":150,"href":29,"icon":124,"description":124,"badge":124,"groupTitle":124,"style":152,"gridColumns":124,"cssClass":124,"psCategoryId":124,"showPsChildren":30,"position":153,"children":154,"psChildren":155},45,{"fr":151},"Offre Starter ✨",{"highlight":20},4,[],[],{"id":157,"type":121,"label":158,"href":78,"icon":124,"description":124,"badge":124,"groupTitle":124,"style":124,"gridColumns":124,"cssClass":124,"psCategoryId":124,"showPsChildren":30,"position":159,"children":160,"psChildren":161},46,{"fr":77},5,[],[],{"id":163,"type":121,"label":164,"href":96,"icon":124,"description":124,"badge":124,"groupTitle":124,"style":124,"gridColumns":124,"cssClass":124,"psCategoryId":124,"showPsChildren":30,"position":165,"children":166,"psChildren":167},47,{"fr":92},6,[],[],{"id":169,"type":121,"label":170,"href":102,"icon":124,"description":124,"badge":124,"groupTitle":124,"style":124,"gridColumns":124,"cssClass":124,"psCategoryId":124,"showPsChildren":30,"position":171,"children":172,"psChildren":173},48,{"fr":101},7,[],[],{"footer":175},{"theme":176,"description":124,"hours":124,"logo":177,"contact":180,"social":181,"bottomBar":191},"dark",{"src":178,"href":179,"alt":95},"\u002Flogo-ac.svg","\u002F",{"email":124,"phone":124,"address":124,"cta":124},[182,185,188],{"platform":183,"href":184,"label":183},"linkedin","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Falexandre-carette\u002F",{"platform":186,"href":187,"label":186},"malt","https:\u002F\u002Fwww.malt.fr\u002Fprofile\u002Falexandrecarette",{"platform":189,"href":190,"label":189},"github","https:\u002F\u002Fgithub.com\u002Fprest4cafe",{"copyright":124},{"header":193},{"logo":194,"topBar":197,"contactEmail":200,"features":201,"navBar":124},{"src":178,"alt":195,"text":95,"href":179,"class":196},"Alexandre Carette — Architecte E-commerce Souverain","h-10 w-10",{"message":124,"showLanguages":30,"align":198,"languages":199},"left",[],"contact@alexandrecarette.fr",{"showSearch":30,"showWishlist":30,"showLogin":20,"showContact":30,"showCart":30,"stickyHeader":20,"headerLayout":202},"inline",{"id":204,"title":205,"category":206,"subcategory":207,"slug":208,"coverImage":209,"thumbnailImage":210,"content":211,"faq":212,"metaDescription":258,"active":20,"datePublished":259,"dateUpdated":259,"readingTime":171,"mentor":124,"audioEnabled":30,"audioUrl":259,"author":124},11,"CI\u002FCD e-commerce : déployer PrestaShop Headless via GitHub Actions","prestashop","developpement","developpement--cicd-github-actions-headless-nuxt","\u002Fblog-covers\u002Fcover-cicd-github-actions-headless-n-1774033905.webp","\u002Fblog-covers\u002Fthumb-cicd-github-actions-headless-n-1774033905.webp","\u003Cp class=\"lead\">Après \u003Cstrong>193 projets PrestaShop\u003C\u002Fstrong> livrés, j'ai une confession à faire : pendant des années, je déployais directement en production. Un accès SSH, un fichier modifié, et on croisait les doigts. Cette pratique — encore courante chez les freelances et les petites agences — est une bombe à retardement pour tout site \u003Cstrong>e-commerce\u003C\u002Fstrong> sérieux. Mettre en place un \u003Cstrong>\u003Ca href=\"\u002Fblog\u002Fprestashop\u002Fdeveloppement\u002Fpipeline-seo-claude-python\">pipeline CI\u002FCD e-commerce\u003C\u002Fa>\u003C\u002Fstrong> avec GitHub Actions a transformé radicalement mon workflow sur mon architecture \u003Cstrong>PrestaShop Headless\u003C\u002Fstrong> &amp; Nuxt 3 : \u003Ca href=\"\u002Fcontact\">déploiements automatisés\u003C\u002Fa>, environnement de préproduction isolé, rollback en deux minutes.\u003C\u002Fp>\n\n\u003Cp>Les chiffres parlent d'eux-mêmes : selon le \u003Cem>Accelerate State of DevOps Report 2023\u003C\u002Fem> de \u003Ca href=\"https:\u002F\u002Fdora.dev\u002F\" target=\"_blank\" rel=\"noreferrer noopener\">DORA\u003C\u002Fa>, les équipes pratiquant le déploiement continu restaurent un service défaillant 6 fois plus vite, avec un taux d'échecs de changements 9 fois inférieur. Dans cet article, je détaille l'architecture complète que j'ai construite sur mon VPS Ubuntu 24.04 : deux environnements Docker étanches, un reverse proxy Nginx et un pipeline GitHub Actions entièrement automatisé.\u003C\u002Fp>\n\n\u003Ch2>Les problématiques courantes du déploiement e-commerce\u003C\u002Fh2>\n\u003Cp class=\"article-nav-context\" style=\"font-size:0.9em;color:#64748b;margin:0.5em 0 1.5em;\">Cet article fait partie de notre dossier \u003Ca href=\"\u002Fblog\u002Fprestashop\u002F\" title=\"Tous nos articles PrestaShop Headless\">PrestaShop Headless\u003C\u002Fa> › \u003Ca href=\"\u002Fblog\u002Fprestashop\u002Fdeveloppement\u002F\" title=\"Articles développement\">développement\u003C\u002Fa>.\u003C\u002Fp>\n\n\n\u003Ctable class=\"article-table\">\n  \u003Cthead>\n    \u003Ctr>\u003Cth>Problématique\u003C\u002Fth>\u003Cth>Cause principale\u003C\u002Fth>\u003Cth>Impact métier\u003C\u002Fth>\u003C\u002Ftr>\n  \u003C\u002Fthead>\n  \u003Ctbody>\n    \u003Ctr>\u003Ctd>Déploiements manuels en production\u003C\u002Ftd>\u003Ctd>Absence de workflow structuré\u003C\u002Ftd>\u003Ctd>Risque de panne immédiate, perte directe de chiffre d'affaires\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>Pas d'environnement de préproduction\u003C\u002Ftd>\u003Ctd>Coût perçu comme trop élevé\u003C\u002Ftd>\u003Ctd>Impossible de tester, régressions introduites en prod\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>Rollback inexistant ou laborieux\u003C\u002Ftd>\u003Ctd>Pas de versioning des images Docker\u003C\u002Ftd>\u003Ctd>Heures de correction sous pression maximale, client impacté\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>Secrets exposés dans le dépôt Git\u003C\u002Ftd>\u003Ctd>Mauvaises pratiques de gestion des variables\u003C\u002Ftd>\u003Ctd>Failles de sécurité, accès non autorisés à la base de données\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>Downtime lors des mises à jour conteneurs\u003C\u002Ftd>\u003Ctd>Rechargement brutal sans health check\u003C\u002Ftd>\u003Ctd>Expérience client dégradée, pénalité SEO potentielle\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n\u003Ch2>L'architecture Docker : deux environnements isolés sur un seul VPS\u003C\u002Fh2>\n\n\u003Cp>La contrainte était claire : un seul VPS Ubuntu 24.04, deux environnements qui ne doivent jamais interférer. La solution repose sur les \u003Cstrong>réseaux Docker isolés\u003C\u002Fstrong> — un mécanisme que beaucoup de développeurs PrestaShop sous-exploitent. Chaque réseau est une bulle étanche : les conteneurs d'un réseau ne peuvent pas communiquer avec ceux d'un autre réseau, sauf autorisation explicite dans le \u003Ccode>docker-compose.yml\u003C\u002Fcode>.\u003C\u002Fp>\n\n\u003Cp>Dans un projet récent pour un client dans le secteur de la mode prêt-à-porter, j'ai découvert que leur équipe testait directement en \u003Ca href=\"\u002Fblog\u002Fprestashop\u002Fperformance\u002Fdocker-vps-deploy-production\" title=\"Docker PrestaShop VPS : déployer en production sans stress\">production\u003C\u002Fa> faute d'environnement dédié. Résultat : une mise à jour du thème avait cassé le tunnel de paiement un vendredi soir, entraînant plusieurs heures de downtime et une perte estimée à plusieurs milliers d'euros de commandes non encaissées. Avec une architecture double environnement, ce type d'incident appartient au passé.\u003C\u002Fp>\n\n\u003Ch3>Les deux réseaux Docker en détail\u003C\u002Fh3>\n\n\u003Cul>\n  \u003Cli>\u003Cstrong>ac_network\u003C\u002Fstrong> (production) : regroupe ac_nuxt, ac_prestashop, ac_mariadb et ac_redis — aucun accès externe direct\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>preprod_network\u003C\u002Fstrong> (préproduction) : mêmes services préfixés \u003Cem>preprod_\u003C\u002Fem>, avec leur propre instance MariaDB\u003C\u002Fli>\n  \u003Cli>Nginx est le seul conteneur connecté aux deux réseaux simultanément, jouant le rôle de reverse proxy intelligent\u003C\u002Fli>\n  \u003Cli>Deux bases de données strictement séparées : \u003Ccode>prestashop_prod\u003C\u002Fcode> et \u003Ccode>prestashop_preprod\u003C\u002Fcode> — contamination impossible\u003C\u002Fli>\n  \u003Cli>Les variables d'environnement de chaque service pointent vers les URLs internes du bon réseau Docker\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>Pour approfondir cette architecture, retrouvez mon article complet sur \u003Ca href=\"\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fdocker-headless-multi-conteneurs\">la mise en place d'une architecture Docker pour PrestaShop Headless\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Ch3>Nginx : routage par domaine vers le bon environnement\u003C\u002Fh3>\n\n\u003Cp>Nginx orchestre le routage en lisant le \u003Ccode>server_name\u003C\u002Fcode> de chaque requête entrante. Voici les cinq étapes du flux complet :\u003C\u002Fp>\n\n\u003Col>\n  \u003Cli>La requête arrive sur le port 443, sécurisée automatiquement via Let's Encrypt et Certbot\u003C\u002Fli>\n  \u003Cli>Nginx identifie le domaine : \u003Ccode>alexandrecarette.fr\u003C\u002Fcode> route vers la production, \u003Ccode>preprod.alexandrecarette.fr\u003C\u002Fcode> vers la préproduction\u003C\u002Fli>\n  \u003Cli>La requête est forwardée vers le conteneur Nuxt correspondant via le réseau Docker approprié\u003C\u002Fli>\n  \u003Cli>Nuxt appelle l'API PrestaShop du même réseau en utilisant la variable \u003Ccode>NUXT_PUBLIC_API_BASE\u003C\u002Fcode>\u003C\u002Fli>\n  \u003Cli>La réponse remonte au client sans jamais traverser l'autre réseau, garantissant l'isolation totale\u003C\u002Fli>\n\u003C\u002Fol>\n\n\u003Ch2>GitHub Actions : construire le pipeline CI\u002FCD e-commerce pas à pas\u003C\u002Fh2>\n\n\u003Cp>GitHub Actions est aujourd'hui la solution de \u003Cstrong>déploiement automatisé\u003C\u002Fstrong> la plus accessible pour un développeur indépendant : gratuite pour les dépôts publics, compétitive sur les privés avec 2 000 minutes de compute offertes chaque mois. Selon la \u003Ca href=\"https:\u002F\u002Fdocs.github.com\u002Fen\u002Factions\u002Fabout-github-actions\u002Funderstanding-github-actions\" target=\"_blank\" rel=\"noreferrer noopener\">documentation officielle de GitHub Actions\u003C\u002Fa>, un workflow est composé de \u003Cem>triggers\u003C\u002Fem> (déclencheurs), de \u003Cem>jobs\u003C\u002Fem> (tâches) et de \u003Cem>steps\u003C\u002Fem> (étapes) — une logique simple mais extrêmement puissante pour orchestrer des déploiements complexes.\u003C\u002Fp>\n\n\u003Cp>J'ai structuré mon pipeline autour de deux branches Git aux comportements distincts :\u003C\u002Fp>\n\n\u003Cul>\n  \u003Cli>\u003Cstrong>Branche \u003Ccode>develop\u003C\u002Fcode>\u003C\u002Fstrong> → déploiement automatique sur la préproduction à chaque push, sans validation manuelle\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Branche \u003Ccode>main\u003C\u002Fcode>\u003C\u002Fstrong> → déploiement en production uniquement après merge d'une Pull Request validée\u003C\u002Fli>\n  \u003Cli>Les secrets sensibles (SSH_PRIVATE_KEY, VPS_HOST, DB_PASSWORD) sont stockés dans GitHub Secrets — jamais dans le code versionné\u003C\u002Fli>\n  \u003Cli>Le runner GitHub se connecte au VPS via SSH et exécute les commandes Docker Compose à distance\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Ch3>Les trois jobs du pipeline de déploiement\u003C\u002Fh3>\n\n\u003Col>\n  \u003Cli>\u003Cstrong>Job lint &amp; build\u003C\u002Fstrong> : vérification du code Nuxt 3 (ESLint, TypeScript check), validation de la syntaxe Docker Compose — étape bloquante en cas d'erreur\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Job test\u003C\u002Fstrong> : exécution des tests unitaires frontend et des tests d'intégration API (appels aux WebServices PrestaShop) — tout échec interrompt le pipeline avant déploiement\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Job deploy\u003C\u002Fstrong> : connexion SSH au VPS, \u003Ccode>git pull\u003C\u002Fcode> sur la branche cible, rebuild des images Docker modifiées, redémarrage gracieux via \u003Ccode>docker compose up -d --build\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Fol>\n\n\u003Cp>Selon DORA (\u003Cem>Accelerate State of DevOps 2023\u003C\u002Fem>), les équipes \u003Cem>elite\u003C\u002Fem> déploient \u003Cstrong>973 fois plus fréquemment\u003C\u002Fstrong> que les équipes sans automatisation, avec un taux d'échecs des changements de seulement 5% contre 46% pour les équipes à faibles performances. Ces chiffres illustrent concrètement le retour sur investissement d'un pipeline bien construit, même pour un développeur solo.\u003C\u002Fp>\n\n\u003Ch3>Gestion des secrets : les trois niveaux de sécurité\u003C\u002Fh3>\n\n\u003Cp>La gestion des secrets est le talon d'Achille de nombreux pipelines artisanaux. Dans mon architecture \u003Ca href=\"\u002Fblog\u002Fprestashop\u002Fdeveloppement\u002Fheadless-vs-shopify-comparatif\" title=\"PrestaShop Headless ou Shopify ? Pourquoi j'ai choisi de bâtir mon propre Hub\">PrestaShop\u003C\u002Fa> Headless, les variables sensibles sont organisées à trois niveaux distincts et complémentaires :\u003C\u002Fp>\n\n\u003Cul>\n  \u003Cli>\u003Cstrong>GitHub Secrets\u003C\u002Fstrong> : SSH_PRIVATE_KEY, VPS_HOST, VPS_USER — utilisés uniquement dans les steps de déploiement, masqués dans les logs\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Fichier .env sur le VPS\u003C\u002Fstrong> : non versionné, créé manuellement lors du setup initial, contient les mots de passe MariaDB, Redis et les clés API\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>runtimeConfig Nuxt 3\u003C\u002Fstrong> : les clés API PrestaShop sont injectées au runtime côté serveur via \u003Ccode>useRuntimeConfig()\u003C\u002Fcode>, jamais exposées dans le bundle client JavaScript\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>Pour une implémentation complète de la sécurisation des appels API dans une architecture headless, consultez mon article sur \u003Ca href=\"\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fwebservices-nuxt-integration-headless\">l'intégration sécurisée des WebServices PrestaShop avec Nuxt 3\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Ch2>Les solutions pour automatiser vos déploiements PrestaShop\u003C\u002Fh2>\n\n\u003Ctable class=\"article-table\">\n  \u003Cthead>\n    \u003Ctr>\u003Cth>Solution\u003C\u002Fth>\u003Cth>Complexité\u003C\u002Fth>\u003Cth>Gain estimé\u003C\u002Fth>\u003C\u002Ftr>\n  \u003C\u002Fthead>\n  \u003Ctbody>\n    \u003Ctr>\u003Ctd>GitHub Actions avec déploiement SSH\u003C\u002Ftd>\u003Ctd>Moyenne\u003C\u002Ftd>\u003Ctd>Déploiements 10× plus rapides, zéro erreur humaine\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>Réseaux Docker isolés prod\u002Fpreprod\u003C\u002Ftd>\u003Ctd>Moyenne\u003C\u002Ftd>\u003Ctd>Tests sécurisés, rollback en moins de 2 minutes\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>Nginx reverse proxy par domaine + Let's Encrypt\u003C\u002Ftd>\u003Ctd>Faible\u003C\u002Ftd>\u003Ctd>SSL automatique, routage intelligent sans surcoût d'infrastructure\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>GitHub Secrets pour les variables sensibles\u003C\u002Ftd>\u003Ctd>Faible\u003C\u002Ftd>\u003Ctd>Sécurité renforcée, conformité RGPD facilitée\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>Stratégie de branches develop\u002Fmain avec PR obligatoire\u003C\u002Ftd>\u003Ctd>Faible\u003C\u002Ftd>\u003Ctd>Validation systématique avant chaque passage en production\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n\u003Cblockquote class=\"expert-quote\">\n  \u003Cp>\"GitHub Actions is a continuous integration and continuous delivery (CI\u002FCD) platform that allows you to automate your build, test, and deployment pipeline. You can create workflows that build and test every pull request to your repository, or deploy merged pull requests to production.\"\u003C\u002Fp>\n  — \u003Ca href=\"https:\u002F\u002Fdocs.github.com\u002Fen\u002Factions\u002Fabout-github-actions\u002Funderstanding-github-actions\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub Docs\u003C\u002Fa>, \u003Ccite>Understanding GitHub Actions\u003C\u002Fcite> (2024)\n\u003C\u002Fblockquote>\n\n\u003Ch2>Conclusion : le CI\u002FCD, l'investissement qui se rentabilise dès le premier incident évité\u003C\u002Fh2>\n\n\u003Cp>Mettre en place un \u003Cstrong>pipeline CI\u002FCD e-commerce\u003C\u002Fstrong> avec GitHub Actions sur une architecture PrestaShop Headless &amp; Nuxt 3 n'est plus réservé aux grandes équipes techniques. Avec les bons outils — Docker, Nginx, GitHub Actions, une stratégie de branches claire — tout développeur indépendant peut déployer avec la même rigueur qu'une équipe de 50 personnes. Les bénéfices sont immédiats en 2026 : déploiements automatisés à chaque commit, préproduction parfaitement isolée, rollback en quelques minutes et secrets parfaitement sécurisés. Et surtout, la tranquillité d'esprit qui permet enfin de se concentrer sur la valeur métier livrée au client, plutôt que sur la gestion du risque opérationnel.\u003C\u002Fp>\n\n\u003Cp>Vous souhaitez mettre en place un pipeline de \u003Cstrong>déploiement automatisé\u003C\u002Fstrong> pour votre boutique PrestaShop ? Discutons de votre projet : \u003Ca href=\"mailto:contact@alexandrecarette.fr\">contact@alexandrecarette.fr\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Cdiv class=\"article-sources\">\n  \u003Ch3>Sources et références\u003C\u002Fh3>\n  \u003Cul>\n    \u003Cli>\u003Ca href=\"https:\u002F\u002Fdora.dev\u002Fresearch\u002F2023\u002Fdora-report\u002F\" target=\"_blank\" rel=\"noreferrer noopener\">DORA — Accelerate State of DevOps Report 2023\u003C\u002Fa>\u003C\u002Fli>\n    \u003Cli>\u003Ca href=\"https:\u002F\u002Fdocs.github.com\u002Fen\u002Factions\u002Fabout-github-actions\u002Funderstanding-github-actions\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub Docs — Understanding GitHub Actions (Documentation officielle)\u003C\u002Fa>\u003C\u002Fli>\n    \u003Cli>\u003Ca href=\"https:\u002F\u002Fdocs.docker.com\u002Fcompose\u002Fnetworking\u002F\" target=\"_blank\" rel=\"noreferrer noopener\">Docker — Networking in Compose\u003C\u002Fa>\u003C\u002Fli>\n    \u003Cli>\u003Ca href=\"https:\u002F\u002Fdocs.prestashop-project.org\u002F8-documentation\u002F\" target=\"_blank\" rel=\"noreferrer noopener\">PrestaShop — Documentation officielle 8.x\u003C\u002Fa>\u003C\u002Fli>\n  \u003C\u002Ful>\n\u003C\u002Fdiv>\n\u003Cdiv style=\"background:#f8fafc;border-left:4px solid #4F46E5;padding:16px 20px;margin:24px 0;\">\u003Cp style=\"margin:0;font-size:14px;\">\u003Cstrong>Approfondir dans l'Academy\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp style=\"margin:4px 0 0;font-size:13px;\">\u003Ca href=\"\u002Facademy\u002Farchitecture-headless\" style=\"text-decoration:underline;color:#4F46E5;\">Module : Architecture Headless de A à Z →\u003C\u002Fa>\u003C\u002Fp>\u003C\u002Fdiv>\n\n\u003Cdiv class=\"articles-lies\" style=\"margin:2em 0;padding:1.5em;border:1px solid #e2e8f0;border-radius:12px;background:#f8fafc;\">\n\u003Ch3 style=\"margin:0 0 0.8em 0;font-size:1em;color:#334155;\">Articles dans le même univers\u003C\u002Fh3>\n\u003Cul style=\"margin:0;padding-left:1.2em;list-style:disc;\">\n\u003Cli>\u003Ca href=\"\u002Fblog\u002Fprestashop\u002Fdeveloppement\u002Fheadless-vs-shopify-comparatif\">PrestaShop Headless ou Shopify : pourquoi bâtir son propre Hub\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fblog\u002Fprestashop\u002Fdeveloppement\u002Fpipeline-seo-claude-python\">Construire une usine à contenu SEO avec PrestaShop, Claude, Python\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fblog\u002Fprestashop\u002Fdeveloppement\u002Fapi-webservice-prestashop-guide-complet\">API WebService PrestaShop : guide complet pour l'intégrer en 2026\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fhub-pro-headless-nuxt-docker\">Coulisses : propulser un Hub Pro avec PrestaShop Headless et Nuxt\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fdiv>",[213,216,219,222,225,228,231,234,237,240,243,246,249,252,255],{"q":214,"a":215},"Qu'est-ce que le CI\u002FCD pour un site e-commerce ?","Le CI\u002FCD (Intégration Continue \u002F Déploiement Continu) automatise les tests et la mise en production de votre code. Au lieu de déployer manuellement en SSH, chaque commit déclenche une chaîne de vérifications avant une livraison automatisée en staging ou production, réduisant les erreurs humaines de 90%.",{"q":217,"a":218},"GitHub Actions est-il gratuit pour un e-commerce ?","Oui, GitHub Actions offre 2000 minutes gratuites par mois pour les dépôts publics et privés. Pour un petit e-commerce, c'est largement suffisant. Au-delà, le coût reste très compétitif (0,008 $\u002Fminute) comparé aux risques d'un déploiement manuel cassé.",{"q":220,"a":221},"Pourquoi préproduction isolée sur Docker ?","Docker isole complètement votre environnement de test : mêmes versions PHP, MariaDB, Redis que la production. Cela élimine le classique « ça marche chez moi » et vous permet de valider chaque commit avant d'impacter les vrais clients.",{"q":223,"a":224},"Comment annuler un déploiement cassé rapidement ?","Avec un pipeline CI\u002FCD, chaque version est versionnée et tagguée dans un registre Docker. Un rollback revient à relancer l'image précédente en deux minutes via un bouton, sans manipulation SSH manuelle ni risque de perte de données.",{"q":226,"a":227},"Faut-il GitHub Actions ou Jenkins pour PrestaShop ?","GitHub Actions est plus simple et intégré nativement si votre code est sur GitHub. Jenkins offre plus de flexibilité pour les architectures complexes, mais demande une VM dédiée. Pour PrestaShop Headless, GitHub Actions suffit largement.",{"q":229,"a":230},"PrestaShop Headless et déploiement, c'est différent ?","Oui, PrestaShop Headless sépare l'API (backend PHP) du frontend (Nuxt). Vous déployez deux services indépendants : PrestaShop en Docker d'un côté, Nuxt 3 de l'autre. Cela simplifie justement le CI\u002FCD car chaque composant a son cycle de vie propre.",{"q":232,"a":233},"Qu'est-ce qu'un reverse proxy Nginx dans le CI\u002FCD ?","Nginx agit comme le point d'entrée unique de votre site, dirigeant les requêtes vers PrestaShop (port 8080) ou Nuxt (port 3000) selon l'URL. Il permet des déploiements sans downtime : on bascule Nginx vers la nouvelle version pendant que l'ancienne s'éteint.",{"q":235,"a":236},"Les tests automatisés sont obligatoires avant déploiement ?","Ils sont fortement recommandés mais non obligatoires techniquement. Un vrai CI\u002FCD inclut au minimum : linting du code, build sans erreur, et tests Playwright sur les pages critiques (panier, paiement). Sans tests, vous déployez à l'aveugle.",{"q":238,"a":239},"Peut-on déployer en production zéro downtime avec GitHub Actions ?","Oui, c'est possible avec une stratégie Blue-Green ou Canary : deux instances en parallèle, Nginx bascule le trafic progressivement. PrestaShop Headless s'y prête bien car il n'y a pas d'état utilisateur sur le backend, contrairement à un monolithe.",{"q":241,"a":242},"GitHub Actions fonctionne aussi pour les freelances seuls ?","Absolument. Un freelance solo gagne même plus à automatiser : un déploiement qui plante à minuit sur un site client coûte très cher en crédibilité et dépannage. GitHub Actions fait le gardien 24\u002F7 pour un coût quasi nul.",{"q":244,"a":245},"Comment monitorer après chaque déploiement ?","Intégrez des vérifications post-déploiement : curls HTTP sur les pages clés, vérification des logs Docker, alertes Slack en cas d'erreur 500. Matomo ou Sentry détectent immédiatement les régressions, même sur des pages rarement utilisées.",{"q":247,"a":248},"Que faire si un déploiement plante en production ?","D'abord, paniquez 3 secondes. Puis : relevez les logs Docker, identifiez l'erreur, committez un fix, pushez vers GitHub, et le CI\u002FCD redéploie automatiquement. Vous ne manipulez jamais SSH, donc aucun risque de surcharge accidentelle.",{"q":250,"a":251},"Coûte-cher l'infrastructure VPS pour CI\u002FCD ?","Un VPS Ubuntu 24.04 avec Docker coûte 5–15 €\u002Fmois. Ajouter GitHub Actions (gratuit ou 5–10 €\u002Fmois selon l'usage) reste négligeable face aux économies : temps sauvé, zéro nuit blanche de déploiement foireux, clients confiants.",{"q":253,"a":254},"Faut-il une équipe DevOps pour maintenir CI\u002FCD ?","Non. Un développeur PHP\u002FVue peut apprendre GitHub Actions en une journée. Les pipelines modernes sont déclaratives (fichier YAML simple) plutôt que du code magique. Vous l'automatisez une fois, ensuite c'est juste des modifications de trigger.",{"q":256,"a":257},"Le CI\u002FCD ralentit-il chaque déploiement ?","Temporairement, oui : 3–5 minutes de tests et build au lieu de 30 secondes de SSH. Mais statistiquement, vous déployez 10 fois moins souvent en correction d'urgence (bugs en prod), donc le gain net est énorme. C'est un investissement qui paie rapidement.","CI\u002FCD e-commerce avec GitHub Actions : déployez un PrestaShop Headless & Nuxt 3 avec deux environnements Docker isolés, zéro downtime et rollback instantané.","",[],[262,275,288,298],{"id":263,"title":264,"category":206,"subcategory":265,"slug":266,"linkRewrite":267,"excerpt":268,"coverImage":269,"thumbnailImage":270,"nuxtUrl":271,"datePublished":272,"dateUpdated":273,"readingTime":204,"faqCount":274},106,"Master Data Management grossiste food PrestaShop : table souveraine","architecture","architecture--mdm-grossiste-food-prestashop","prestashop--architecture--mdm-grossiste-food-prestashop","Comment une table MDM unique remplace 4 features PrestaShop natives pour gérer DLC, lots, calibres et allergènes. Retour Palimex 1082 produits.","https:\u002F\u002Falexandrecarette.fr\u002Fblog-covers\u002Fcover-master-data-management-1776574808.webp","https:\u002F\u002Falexandrecarette.fr\u002Fblog-covers\u002Fthumb-master-data-management-1776574808.webp","\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fmdm-grossiste-food-prestashop","2026-04-19T05:03:33.000Z","2026-04-20T05:03:59.000Z",15,{"id":276,"title":277,"category":206,"subcategory":278,"slug":279,"linkRewrite":280,"excerpt":281,"coverImage":282,"thumbnailImage":283,"nuxtUrl":284,"datePublished":285,"dateUpdated":286,"readingTime":287,"faqCount":274},89,"Core Web Vitals PrestaShop : passer de 30 à 95 sur PageSpeed","performance","performance--core-web-vitals-prestashop-pagespeed-95","prestashop--performance--core-web-vitals-prestashop-pagespeed-95","Core Web Vitals PrestaShop : méthode complète pour passer de 30 à 95 sur PageSpeed. LCP, INP, CLS, cache, images, JS — guide expert 2026.","https:\u002F\u002Falexandrecarette.fr\u002Fblog-covers\u002Fcover-core-web-vitals-1775555697.webp","https:\u002F\u002Falexandrecarette.fr\u002Fblog-covers\u002Fthumb-core-web-vitals-1775555697.webp","\u002Fblog\u002Fprestashop\u002Fperformance\u002Fcore-web-vitals-prestashop-pagespeed-95","2026-04-07T09:56:51.000Z","2026-04-12T11:33:47.000Z",10,{"id":289,"title":114,"category":206,"subcategory":207,"slug":290,"linkRewrite":291,"excerpt":292,"coverImage":293,"thumbnailImage":294,"nuxtUrl":115,"datePublished":295,"dateUpdated":296,"readingTime":297,"faqCount":274},85,"developpement--api-webservice-prestashop-guide-complet","prestashop--developpement--api-webservice-prestashop-guide-complet","API WebService PrestaShop : activez, sécurisez et interrogez l'API REST native. Guide complet avec exemples curl, PHP, Python et erreurs courantes.","https:\u002F\u002Falexandrecarette.fr\u002Fblog-covers\u002Fcover-api-webservice-prestashop-1775284236.webp","https:\u002F\u002Falexandrecarette.fr\u002Fblog-covers\u002Fthumb-api-webservice-prestashop-1775284236.webp","2026-04-04T06:32:35.000Z","2026-04-08T07:50:50.000Z",12,{"id":299,"title":300,"category":206,"subcategory":265,"slug":301,"linkRewrite":302,"excerpt":303,"coverImage":304,"thumbnailImage":305,"nuxtUrl":306,"datePublished":307,"dateUpdated":308,"readingTime":309,"faqCount":274},84,"PrestaShop WebServices + Nuxt 3 — intégration headless complète","architecture--webservices-nuxt-integration-headless","prestashop--architecture--webservices-nuxt-integration-headless","PrestaShop WebServices et Nuxt 3 : guide technique pas-à-pas pour une intégration headless performante. Clé API, composables, SSR, cache Redis et SEO.","https:\u002F\u002Falexandrecarette.fr\u002Fblog-covers\u002Fcover-prestashop-webservices-nuxt-1775283999.webp","https:\u002F\u002Falexandrecarette.fr\u002Fblog-covers\u002Fthumb-prestashop-webservices-nuxt-1775283999.webp","\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fwebservices-nuxt-integration-headless","2026-04-04T06:28:50.000Z","2026-04-09T05:02:18.000Z",13]