{"id":3356,"date":"2023-09-18T20:24:19","date_gmt":"2023-09-18T18:24:19","guid":{"rendered":"https:\/\/www.h-hennes.fr\/blog\/?p=3356"},"modified":"2023-09-18T20:24:22","modified_gmt":"2023-09-18T18:24:22","slug":"prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou","status":"publish","type":"post","link":"https:\/\/www.h-hennes.fr\/blog\/2023\/09\/18\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\/","title":{"rendered":"Prestashop : D\u00e9ploiement continu, qui peut livrer du code et ou"},"content":{"rendered":"\n<p>Cet article est le 2\u00e8me de la s\u00e9rie sur le d\u00e9ploiement et l&rsquo;int\u00e9gration continu dans Prestashop.<br>Les autres articles articles de cette s\u00e9rie sont les suivants :<\/p>\n\n\n\n<ul>\n<li><a title=\"Prestashop : Aller plus loin dans le d\u00e9ploiement continu\" href=\"https:\/\/www.h-hennes.fr\/blog\/2023\/09\/11\/prestashop-aller-plus-loin-dans-le-deploiement-continu\/\">Introduction<\/a><\/li>\n<li><a href=\"https:\/\/www.h-hennes.fr\/blog\/2023\/09\/16\/prestashop-deploiement-continu-initialisation-du-projet\/\">Initialisation du projet<\/a><\/li>\n<li><a title=\"Prestashop : D\u00e9ploiement continu, qui peut livrer du code et ou\" href=\"https:\/\/www.h-hennes.fr\/blog\/2023\/09\/18\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\/\">Qui peut livrer du code et ou<\/a><\/li>\n<li><a title=\"Prestashop : D\u00e9ploiement continu, v\u00e9rifier la qualit\u00e9 du code\" href=\"https:\/\/www.h-hennes.fr\/blog\/2023\/09\/22\/prestashop-deploiement-continu-verifier-la-qualite-du-code\/\">Est-ce que la qualit\u00e9 du code livr\u00e9e est correcte<\/a><\/li>\n<li><a title=\"Prestashop : Comment limiter les interactions manuelles avec le d\u00e9ploiement continu\" href=\"https:\/\/www.h-hennes.fr\/blog\/2023\/11\/06\/prestashop-comment-limiter-les-interactions-manuelles-avec-le-deploiement-continu\/\">Comment limiter les interactions manuelles<\/a><\/li>\n<li><a title=\"Prestashop : Est-ce que mon site fonctionne toujours apr\u00e8s ma livraison de code.\" href=\"https:\/\/www.h-hennes.fr\/blog\/2023\/11\/08\/prestashop-est-ce-que-mon-site-fonctionne-toujours-apres-ma-livraison-de-code\/\">Est-ce que mon site fonctionne toujours apr\u00e8s ma livraison de code.<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Configuration initiale<\/h2>\n\n\n\n<p>Cette \u00e9tape va surtout vous concerner si vous travaillez en \u00e9quipe sur les projets et\/ou si vous faites intervenir ponctuellement des intervenants externes.<br>Dans le cas ou vous travaillez tout seul, ce n&rsquo;est pas forc\u00e9ment n\u00e9cessaire mais c&rsquo;est tout de m\u00eame une bonne pratique.<\/p>\n<p>Dans le cadre de mes projets j&rsquo;ai toujours 3 environnements :<\/p>\n<ol>\n<li>Environnement local<\/li>\n<li>Environnement de pr\u00e9production ( branche git dev )<\/li>\n<li>Environnement de production ( branche git master )<\/li>\n<\/ol>\n<p>Au niveau de git, le workflow utilis\u00e9 est le suivant :<\/p>\n<p>Toute nouvelle fonctionnalit\u00e9 est faite d&rsquo;abord en local, dans une nouvelle branche, issue de master.<br>La livraison en <strong>pr\u00e9production<\/strong> est faite en mergeant cette branche dans la branche <strong>dev<\/strong><br>La livraison en <strong>production<\/strong> est faite en mergeant cette branche dans le branche <strong>master<\/strong><\/p>\n<p><strong>Aucun commit n&rsquo;est donc fait directement ni dans la branche master, ni dans la branche dev.<\/strong><\/p>\n<p>Partant de ce principe on peut donc d\u00e9finir les branches <strong>master<\/strong> et <strong>dev<\/strong>&nbsp; comme prot\u00e9g\u00e9es, et emp\u00eacher les d\u00e9veloppeurs de pousser directement du code dans ces branches.<br>Lors de l&rsquo;initialisation de notre projet nous avons cr\u00e9\u00e9 par d\u00e9faut une branche <strong>master.<\/strong><br><br>Nous pouvons donc cr\u00e9er une branche<strong> dev<\/strong> si elle n&rsquo;existe pas encore.<br>Puis la pousser sur le d\u00e9p\u00f4t distant et d\u00e9finir que notre branche suivra la branche dev distante.<br>C&rsquo;est possible via les commandes suivantes :<\/p>\n\n\n\n<pre lang=\"bash\">\ngit checkout -b dev\ngit push --set-upstream origin dev\n<\/pre>\n\n\n\n<p>Nos 2 branches sont bien cr\u00e9\u00e9s \u00e0 pr\u00e9sent, il est temps d&rsquo;aller dans gitlab pour configurer ce blocage.<br><br>Je pars du principe que votre compte gitlab est en anglais.<br><br>Aller dans \u00ab\u00a0Settings \/&nbsp; Repository \u00a0\u00bb puis dans \u00ab\u00a0Protected branches\u00a0\u00bb.<br>Normalement la&nbsp; branche master doit d\u00e9j\u00e0 \u00eatre prot\u00e9g\u00e9e, mais si ce n&rsquo;est pas le cas configurez le.<br>Puis faites de m\u00eame sur la branche dev.<\/p>\n<p>Il est \u00e9galement n\u00e9cessaire de configurer quel r\u00f4le est autoris\u00e9e \u00e0 merger ou pusher du code.<br>Dans mon cas j&rsquo;autorise ensuite uniquement les utilisateurs qui ont le r\u00f4le \u00ab\u00a0Maintainers\u00a0\u00bb \u00e0 merger le code, et personne \u00e0 push.<br><br>En fonction de la taille de votre projet et des diff\u00e9rents intervenants c&rsquo;est ici qu&rsquo;il faudra affiner les droits.<\/p>\n<p>Un lead developpeur aura par exemple le r\u00f4le de maintainer sur le projet ce qui permettra \u00e0 lui seul de livrer du code en production.<br>Mais on peut d\u00e9j\u00e0 autoriser les d\u00e9veloppeurs \u00e0 livrer \u00e0 merger leur code en pr\u00e9production ( En autorisant le r\u00f4le Developer )<br><br>Sur un projet personnel, on peut \u00eatre moins strict et se dire que seule la branche master sera prot\u00e9g\u00e9e.<br>Ceci simplifiera les livraisons de code.<br>Libre \u00e0 vous ici de d\u00e9finir vos r\u00e8gles en fonction de la taille de votre \u00e9quipe et de votre projet \ud83d\ude42<br>Mais c&rsquo;est ici que vous pouvez le d\u00e9finir.<br><br>Pour toute question sur les r\u00f4les, vous pouvez lire la documentation officielle de gitlab sur les diff\u00e9rents r\u00f4les : <a href=\"_wp_link_placeholder\" data-wplink-edit=\"true\">https:\/\/docs.gitlab.com\/ee\/user\/permissions.html<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"392\" src=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-1024x392.png\" alt=\"Droits sur les branches\" class=\"wp-image-3346\" srcset=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-1024x392.png 1024w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-300x115.png 300w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-768x294.png 768w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image.png 1272w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>Ceci aura pour effet d&rsquo;interdire les push de code en direct sur ces branches.<br>Comme vous pouvez le voir sur la capture suivante, si j&rsquo;essaye d&rsquo;envoyer du code, le push va g\u00e9n\u00e9rer une erreur :<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"817\" height=\"247\" src=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-1.png\" alt=\"\" class=\"wp-image-3348\" srcset=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-1.png 817w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-1-300x91.png 300w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-1-768x232.png 768w\" sizes=\"auto, (max-width: 817px) 100vw, 817px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Livraison de code avec les Merge Request (MR)<\/h2>\n\n\n\n<p>A partir de la pour la livraison du code on va utiliser la fonctionnalit\u00e9 de Merge Request de gitlab.<br>( Si vous avez l&rsquo;habitude d&rsquo;utiliser Github le wording change juste l\u00e9g\u00e8rement de Pull Request \u00e0 Merge Request mais c&rsquo;est exactement la m\u00eame chose. )<br><br>Pour l&rsquo;exemple nous allons donc cr\u00e9er une nouvelle branche \u00ab\u00a0gitignore\u00a0\u00bb et ajouter les fichiers Thumbs.db dans le fichier .gitignore situ\u00e9 \u00e0 la racine du projet.<br>Une fois la branche envoy\u00e9e, vous pouvez tout de suite voir un encart vert en haut de votre d\u00e9p\u00f4t dans l&rsquo;interface gitlab qui vous demande de faire une merge request.<br>Cliquer sur le bouton \u00ab\u00a0Create a merge request\u00a0\u00bb<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-3.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-3.png\" alt=\"\" class=\"wp-image-3410\" style=\"width:1200px;height:146px\" width=\"1200\" height=\"146\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Nous allons \u00e0 pr\u00e9sent voir les diff\u00e9rentes options de la fen\u00eatre de cr\u00e9ation de la merge request<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-4.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-4.png\" alt=\"\" class=\"wp-image-3411\" style=\"width:1200px;height:531px\" width=\"1200\" height=\"531\"\/><\/a><\/figure>\n\n\n\n<ol>\n<li>&nbsp;La branche dans laquelle vous souhaitez livrer le code. Par d\u00e9faut ce sera la branche par d\u00e9faut du projet qui sera s\u00e9lectionn\u00e9e.<br>Si vous souhaitez livrer sur l&rsquo;environnement de pr\u00e9production il faut donc bien penser \u00e0 merger vers \u00ab\u00a0dev\u00a0\u00bb<\/li>\n<li>Mettez un titre qui d\u00e9crit la modification ( par d\u00e9faut cela reprends le message du commit )<\/li>\n<li>Mettez une description rapide du changement, ceci permets d&rsquo;expliquer aux autres intervenants ce qui est r\u00e9alis\u00e9 dans cette branche.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-5.png\"><img loading=\"lazy\" decoding=\"async\" width=\"778\" height=\"688\" src=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-5.png\" alt=\"\" class=\"wp-image-3412\" srcset=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-5.png 778w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-5-300x265.png 300w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-5-768x679.png 768w\" sizes=\"auto, (max-width: 778px) 100vw, 778px\" \/><\/a><\/figure>\n\n\n\n<ol>\n<li>(Si n\u00e9cessaire ) s\u00e9lectionner la personne qui va devoir v\u00e9rifier le code<\/li>\n<li>Options qui permettent de supprimer la branche une fois qu&rsquo;elle est livr\u00e9e ( bonne pratique pour \u00e9viter d&rsquo;avoir trop de branches sur le projet )<br>Et de regrouper tous les commits d&rsquo;une branche en un seul lors de la merge request ( permets d&rsquo;avoir un historique git plus simple ), sur ce point c&rsquo;est \u00e0 votre convenance.<br>De mon c\u00f4t\u00e9 j&rsquo;aime bien garder l&rsquo;historique de tous les commits sur certains d\u00e9veloppements pour retenir les diff\u00e9rentes \u00e9tapes.<\/li>\n<li>Liste des commits qui vont \u00eatre livr\u00e9s<\/li>\n<li>Une fois que tout est bon cliquez sur le bouton \u00ab\u00a0Create Merge Request\u00a0\u00bb \ud83d\ude42<\/li>\n<\/ol>\n<p>La merge request est ensuite cr\u00e9\u00e9 comme vous pouvez le voir sur la capture suivante :<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-6.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"508\" src=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-6-1024x508.png\" alt=\"\" class=\"wp-image-3413\" srcset=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-6-1024x508.png 1024w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-6-300x149.png 300w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-6-768x381.png 768w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-6.png 1045w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>L&rsquo;onglet important ici est \u00ab\u00a0Changes\u00a0\u00bb, puisqu&rsquo;il permets de v\u00e9rifier les changements de code qui vont \u00eatre mis en place.<br>Et des les valider ( ou non ) <br>Dans notre cas d&rsquo;exemple on peut voir que c&rsquo;est tr\u00e8s basique, mais il peut y avoir des 100 aines de lignes dans cette vue !<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-7.png\"><img loading=\"lazy\" decoding=\"async\" width=\"808\" height=\"475\" src=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-7.png\" alt=\"\" class=\"wp-image-3414\" srcset=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-7.png 808w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-7-300x176.png 300w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-7-768x451.png 768w\" sizes=\"auto, (max-width: 808px) 100vw, 808px\" \/><\/a><\/figure>\n\n\n\n<p>Si les changements ne sont pas bons, le reviewer pourra mettre des commentaires et refuser votre Merge Request.<br \/>Dans ce cas il suffit de pousser du code sur la branche concern\u00e9e, et la merge request se mettra \u00e0 jour automatiquement.<br \/><br \/>Si les changements sont ok, il est temps de cliquer sur le bouton \u00ab\u00a0Merge\u00a0\u00bb de l&rsquo;onglet \u00ab\u00a0Overview\u00a0\u00bb<br \/>Et le code sera ensuite bien livr\u00e9 \ud83d\ude42<br \/><br \/>A travers ces diff\u00e9rentes \u00e9tapes Il est donc possible de contr\u00f4ler le code qui va \u00eatre envoy\u00e9 vers quel environnement et par qui.<br \/>Ceci nous permets de r\u00e9pondre \u00e0 notre premi\u00e8re probl\u00e9matique de qui livre du code et ou.<br \/><br \/>Dans la prochaine \u00e9tape, on va s&rsquo;int\u00e9resser \u00e0 v\u00e9rifier si le code qui est pouss\u00e9 est conforme \u00e0 la qualit\u00e9 de notre projet.<br \/>Et que les fichiers envoy\u00e9s sont valides, toutes ces v\u00e9rifications vont pouvoir se faire sur les Merge Request (MR), ce qui permettra d&rsquo;\u00e9viter de livrer n&rsquo;importe quoi \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cet article est le 2\u00e8me de la s\u00e9rie sur le d\u00e9ploiement et l&rsquo;int\u00e9gration continu dans Prestashop.Les autres articles articles de cette s\u00e9rie sont les suivants : Configuration initiale Cette \u00e9tape va surtout vous concerner si vous travaillez en \u00e9quipe sur les projets et\/ou si vous faites intervenir ponctuellement des intervenants externes.Dans le cas ou vous [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[245],"tags":[597,484,104],"class_list":["post-3356","post","type-post","status-publish","format-standard","hentry","category-prestashop-2","tag-ci-cd","tag-gitlab","tag-prestashop"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.8 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"herve\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.h-hennes.fr\/blog\/2023\/09\/18\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.8\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2023\\\/09\\\/18\\\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\\\/#article\",\"name\":\"Prestashop : D\\u00e9ploiement continu, qui peut livrer du code et ou | Herv\\u00e9 Hennes\",\"headline\":\"Prestashop : D\\u00e9ploiement continu, qui peut livrer du code et ou\",\"author\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/author\\\/herve\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/09\\\/image.png\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2023\\\/09\\\/18\\\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\\\/#articleImage\",\"width\":1272,\"height\":487},\"datePublished\":\"2023-09-18T20:24:19+02:00\",\"dateModified\":\"2023-09-18T20:24:22+02:00\",\"inLanguage\":\"fr-FR\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2023\\\/09\\\/18\\\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2023\\\/09\\\/18\\\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\\\/#webpage\"},\"articleSection\":\"Prestashop, ci\\\/cd, gitlab, prestashop\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2023\\\/09\\\/18\\\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/category\\\/prestashop-2\\\/#listItem\",\"name\":\"Prestashop\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/category\\\/prestashop-2\\\/#listItem\",\"position\":2,\"name\":\"Prestashop\",\"item\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/category\\\/prestashop-2\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2023\\\/09\\\/18\\\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\\\/#listItem\",\"name\":\"Prestashop : D\\u00e9ploiement continu, qui peut livrer du code et ou\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2023\\\/09\\\/18\\\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\\\/#listItem\",\"position\":3,\"name\":\"Prestashop : D\\u00e9ploiement continu, qui peut livrer du code et ou\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/category\\\/prestashop-2\\\/#listItem\",\"name\":\"Prestashop\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/#organization\",\"name\":\"Herv\\u00e9 Hennes\",\"description\":\"D\\u00e9veloppeur e-commerce\",\"url\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/author\\\/herve\\\/#author\",\"url\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/author\\\/herve\\\/\",\"name\":\"herve\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2023\\\/09\\\/18\\\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/248532c833c69e304668cc20fd20ec6ddc1808306f57d5d14e632059f50347a4?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"herve\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2023\\\/09\\\/18\\\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\\\/#webpage\",\"url\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2023\\\/09\\\/18\\\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\\\/\",\"name\":\"Prestashop : D\\u00e9ploiement continu, qui peut livrer du code et ou | Herv\\u00e9 Hennes\",\"inLanguage\":\"fr-FR\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2023\\\/09\\\/18\\\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/author\\\/herve\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/author\\\/herve\\\/#author\"},\"datePublished\":\"2023-09-18T20:24:19+02:00\",\"dateModified\":\"2023-09-18T20:24:22+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/\",\"name\":\"Herv\\u00e9 Hennes\",\"description\":\"D\\u00e9veloppeur e-commerce\",\"inLanguage\":\"fr-FR\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Prestashop : D\u00e9ploiement continu, qui peut livrer du code et ou | Herv\u00e9 Hennes","description":"","canonical_url":"https:\/\/www.h-hennes.fr\/blog\/2023\/09\/18\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.h-hennes.fr\/blog\/2023\/09\/18\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\/#article","name":"Prestashop : D\u00e9ploiement continu, qui peut livrer du code et ou | Herv\u00e9 Hennes","headline":"Prestashop : D\u00e9ploiement continu, qui peut livrer du code et ou","author":{"@id":"https:\/\/www.h-hennes.fr\/blog\/author\/herve\/#author"},"publisher":{"@id":"https:\/\/www.h-hennes.fr\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image.png","@id":"https:\/\/www.h-hennes.fr\/blog\/2023\/09\/18\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\/#articleImage","width":1272,"height":487},"datePublished":"2023-09-18T20:24:19+02:00","dateModified":"2023-09-18T20:24:22+02:00","inLanguage":"fr-FR","mainEntityOfPage":{"@id":"https:\/\/www.h-hennes.fr\/blog\/2023\/09\/18\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\/#webpage"},"isPartOf":{"@id":"https:\/\/www.h-hennes.fr\/blog\/2023\/09\/18\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\/#webpage"},"articleSection":"Prestashop, ci\/cd, gitlab, prestashop"},{"@type":"BreadcrumbList","@id":"https:\/\/www.h-hennes.fr\/blog\/2023\/09\/18\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.h-hennes.fr\/blog#listItem","position":1,"name":"Home","item":"https:\/\/www.h-hennes.fr\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/www.h-hennes.fr\/blog\/category\/prestashop-2\/#listItem","name":"Prestashop"}},{"@type":"ListItem","@id":"https:\/\/www.h-hennes.fr\/blog\/category\/prestashop-2\/#listItem","position":2,"name":"Prestashop","item":"https:\/\/www.h-hennes.fr\/blog\/category\/prestashop-2\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.h-hennes.fr\/blog\/2023\/09\/18\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\/#listItem","name":"Prestashop : D\u00e9ploiement continu, qui peut livrer du code et ou"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.h-hennes.fr\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.h-hennes.fr\/blog\/2023\/09\/18\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\/#listItem","position":3,"name":"Prestashop : D\u00e9ploiement continu, qui peut livrer du code et ou","previousItem":{"@type":"ListItem","@id":"https:\/\/www.h-hennes.fr\/blog\/category\/prestashop-2\/#listItem","name":"Prestashop"}}]},{"@type":"Organization","@id":"https:\/\/www.h-hennes.fr\/blog\/#organization","name":"Herv\u00e9 Hennes","description":"D\u00e9veloppeur e-commerce","url":"https:\/\/www.h-hennes.fr\/blog\/"},{"@type":"Person","@id":"https:\/\/www.h-hennes.fr\/blog\/author\/herve\/#author","url":"https:\/\/www.h-hennes.fr\/blog\/author\/herve\/","name":"herve","image":{"@type":"ImageObject","@id":"https:\/\/www.h-hennes.fr\/blog\/2023\/09\/18\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/248532c833c69e304668cc20fd20ec6ddc1808306f57d5d14e632059f50347a4?s=96&d=mm&r=g","width":96,"height":96,"caption":"herve"}},{"@type":"WebPage","@id":"https:\/\/www.h-hennes.fr\/blog\/2023\/09\/18\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\/#webpage","url":"https:\/\/www.h-hennes.fr\/blog\/2023\/09\/18\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\/","name":"Prestashop : D\u00e9ploiement continu, qui peut livrer du code et ou | Herv\u00e9 Hennes","inLanguage":"fr-FR","isPartOf":{"@id":"https:\/\/www.h-hennes.fr\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/www.h-hennes.fr\/blog\/2023\/09\/18\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\/#breadcrumblist"},"author":{"@id":"https:\/\/www.h-hennes.fr\/blog\/author\/herve\/#author"},"creator":{"@id":"https:\/\/www.h-hennes.fr\/blog\/author\/herve\/#author"},"datePublished":"2023-09-18T20:24:19+02:00","dateModified":"2023-09-18T20:24:22+02:00"},{"@type":"WebSite","@id":"https:\/\/www.h-hennes.fr\/blog\/#website","url":"https:\/\/www.h-hennes.fr\/blog\/","name":"Herv\u00e9 Hennes","description":"D\u00e9veloppeur e-commerce","inLanguage":"fr-FR","publisher":{"@id":"https:\/\/www.h-hennes.fr\/blog\/#organization"}}]}},"aioseo_meta_data":{"post_id":"3356","title":null,"description":null,"keywords":[],"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":[],"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2023-09-11 06:52:04","updated":"2023-09-18 18:24:22","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.h-hennes.fr\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.h-hennes.fr\/blog\/category\/prestashop-2\/\" title=\"Prestashop\">Prestashop<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tPrestashop : D\u00e9ploiement continu, qui peut livrer du code et ou\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.h-hennes.fr\/blog"},{"label":"Prestashop","link":"https:\/\/www.h-hennes.fr\/blog\/category\/prestashop-2\/"},{"label":"Prestashop : D\u00e9ploiement continu, qui peut livrer du code et ou","link":"https:\/\/www.h-hennes.fr\/blog\/2023\/09\/18\/prestashop-deploiement-continu-qui-peut-livrer-du-code-et-ou\/"}],"_links":{"self":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/3356","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/comments?post=3356"}],"version-history":[{"count":9,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/3356\/revisions"}],"predecessor-version":[{"id":3425,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/3356\/revisions\/3425"}],"wp:attachment":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/media?parent=3356"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/categories?post=3356"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/tags?post=3356"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}