{"id":3365,"date":"2023-09-16T16:45:29","date_gmt":"2023-09-16T14:45:29","guid":{"rendered":"https:\/\/www.h-hennes.fr\/blog\/?p=3365"},"modified":"2023-09-16T16:47:52","modified_gmt":"2023-09-16T14:47:52","slug":"prestashop-deploiement-continu-initialisation-du-projet","status":"publish","type":"post","link":"https:\/\/www.h-hennes.fr\/blog\/2023\/09\/16\/prestashop-deploiement-continu-initialisation-du-projet\/","title":{"rendered":"Prestashop : D\u00e9ploiement continu, initialisation du projet"},"content":{"rendered":"\n<p>Cet article est le 1er article de la s\u00e9rie sur le d\u00e9ploiement et l&rsquo;int\u00e9gration continue dans Prestashop.<br>Les autres articles articles de cette s\u00e9ries 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<h3 class=\"wp-block-heading\">Introduction<\/h3>\n\n\n\n<p>L&rsquo;essentiel de l&rsquo;article de 2017 que j&rsquo;avais \u00e9crit sur le sujet reste d&rsquo;actualit\u00e9, \u00e0 l&rsquo;exception de la version de Prestashop et de la structure globale du projet.<br>Je vous invite donc \u00e0 suivre l&rsquo;ensemble des \u00e9l\u00e9ments de l&rsquo;ancien article pour la base.<br>Celui-ci est disponible ici : <a href=\"https:\/\/www.h-hennes.fr\/blog\/2017\/04\/27\/prestashop-passer-au-deploiement-continu\" target=\"_blank\" rel=\"noopener\">https:\/\/www.h-hennes.fr\/blog\/2017\/04\/27\/prestashop-passer-au-deploiement-continu\/<\/a><br>Et je vais d\u00e9tailler uniquement les changements apport\u00e9s.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Structure globale du projet<\/h3>\n\n\n\n<p>Dans le projet git, je recommande \u00e0 pr\u00e9sent de cr\u00e9er un sous-dossier qui&nbsp; contiendra les fichiers du site.<br>Et non plus de mettre le code de Prestashop directement \u00e0 la racine.<br><br>Pour ma part&nbsp; je vais l\u2019appeler <strong>www<\/strong> , mais libre \u00e0 vous de lui en donner un autre nom.<br><br>L&rsquo;int\u00e9r\u00eat est ce dossier est de permettre de versionner d&rsquo;autres \u00e9l\u00e9ments que le site dans le d\u00e9p\u00f4t git, mais qui n&rsquo;ont pas vocation \u00e0 \u00eatre accessible par les visiteurs de votre site web.<br>Ceci permets \u00e9galement de ne pas exposer votre dossier .git \u00e0 la racine de votre site.<br>Nous pourrions par exemple ajouter un dossier <strong>scripts<\/strong> contenant des scripts de r\u00e9cup\u00e9ration de donn\u00e9es, un dossier <strong>docker<\/strong> pour contenir des fichiers de configuration docker , un dossier <strong>dumps<\/strong> pour stocker des sauvegardes de la base mysql ect &#8230;<br><br>Le vhost de votre serveur pointera ensuite directement vers ce dossier \u00ab\u00a0<strong>www<\/strong>\u00ab\u00a0<\/p>\n<p>En revanche <strong>le fichier .gitlab-ci.yml doit rester \u00e0 la racine<\/strong><br><br><span style=\"text-decoration: underline;\">Note :<\/span> <br>Pour ceux qui ont encore une ancienne structure il reste \u00e9galement possible de cr\u00e9er ces dossiers \u00e0 la racine.<br>Mais il faut bien penser \u00e0 rajouter des fichiers .htaccess ou la configuration nginx n\u00e9cessaires pour qu&rsquo;ils ne soient pas accessibles du public.<\/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-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"183\" height=\"186\" src=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2023\/09\/image-2.png\" alt=\"\" class=\"wp-image-3367\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Fichiers .gitignore<\/h2>\n\n\n\n<p>Dans le projets il est possible d&rsquo;ajouter non pas un mais 2 fichiers .gitignore \ud83d\ude42<br>( Pour rappel, ceux-ci permette d&rsquo;ignorer certains fichiers dans le gestionnaire de version git.)<br>On va en rajouter un relativement simple \u00e0 la racine du projet dans le but de ne pas versionner :<\/p>\n<ul>\n<li>les fichiers de configuration de l&rsquo;\u00e9diteur de code ( dans mon cas PHPStorm)<\/li>\n<li>les fichiers d&rsquo;archives .zip ( li\u00e9es aux installation de modules par ex , \u00e0 adapter selon vos contraintes)<\/li>\n<li>Les dumps de la base de donn\u00e9es<\/li>\n<\/ul>\n<p>Avec le contenu suivant :<\/p>\n\n\n\n<pre>\n\/.idea\n*.zip\n*.sql.gz\n<\/pre>\n\n\n\n<p>Puis on va rajouter dans le dossier <strong>www<\/strong> celui li\u00e9 \u00e0 Prestashop avec le contenu suivant :<\/p>\n\n\n\n<pre>\n#Fichiers \u00e0 la racine et extensions \u00e0 ne pas prendre en compte\n*.log\n.DS_Store\n\/info.php\n\/.htaccess\n\/robots.txt\n\/sitemap.xml\n\/XMLFeed.cache\n\n#wepack\nnode_modules\/\n\n#admin-(Renommer avec le nom de l'admin, dans mon cas admin-dev )\n\/admin-dev\/autoupgrade\/*\n!\/admin-dev\/autoupgrade\/index.php\n\/admin-dev\/backups\/*\n!\/admin-dev\/backups\/.htaccess\n!\/admin-dev\/backups\/index.php\n\/admin-dev\/export\/*\n!\/admin-dev\/export\/.htaccess\n!\/admin-dev\/export\/index.php\n\/admin-dev\/import\/*\n!\/admin-dev\/import\/.htaccess\n!\/admin-dev\/import\/index.php\n\n# Fichiers de configuration\n\/app\/config\/parameters.php\n\/app\/config\/parameters.php.local\n\/app\/config\/parameters.yml\n\/config\/settings.*.php\n\/config\/defines_custom.inc.php\n\/config\/xml\/*.xml\n\/config\/themes\/*\/*.json\n\n#Cache applicatif\n\/cache\/*\n!\/cache\/index.php\n!\/cache\/.htaccess\n!\/cache\/*\/\n\/cache\/*\/*\n!\/cache\/cachefs\/index.php\n!\/cache\/purifier\/index.php\n!\/cache\/push\/index.php\n!\/cache\/sandbox\/index.php\n!\/cache\/smarty\/index.php\n!\/cache\/tcpdf\/index.php\n\/var\/cache\/*\n\/var\/logs\/*\n\/var\/sessions\/*\n\n#Contenus du site\n\/download\/*\n!\/download\/.htaccess\n!\/download\/index.php\n\/upload\/*\n!\/upload\/.htaccess\n\n#Gestion des images ( On conserve les images syst\u00e8me, et les index.php uniquement dans les autres dossiers )\n\/img\/c\/*\n!\/img\/c\/index.php\n\/img\/cms\/*\n!\/img\/cms\/index.php\n\/img\/co\/*\n!\/img\/co\/index.php\n\/img\/l\/*\n!\/img\/l\/index.php\n\/img\/m\/*\n!\/img\/m\/index.php\n\/img\/os\/*\n!\/img\/os\/index.php\n\/img\/p\/*\n!\/img\/p\/index.php\n\/img\/s\/*\n!\/img\/s\/index.php\n\/img\/st\/*\n!\/img\/st\/index.php\n\/img\/su\/*\n!\/img\/su\/index.php\n\/img\/tmp\/*\n!\/img\/tmp\/index.php\n\n#Overrides\n\/override\/*\n!\/override\/.htaccess\n!\/override\/index.php\n\n\n#Modules ( Affiner ici avec les modules sp\u00e9cifiques install\u00e9s )\n\n## Modules natifs prestashop\n\/modules\/ps_imageslider\/images\/*\n!\/modules\/ps_imageslider\/images\/index.php\n\n## Modules sp\u00e9cifiques au site\n\n#Modules de dev\n\/modules\/pscleaner\/\n\n#Themes\n\/themes\/*\/cache\/\n\/themes\/*\/assets\/cache\/\n\/modules\/*\/config*.xml\n<\/pre>\n\n\n\n<p>En combinant l&rsquo;ancien article avec ces nouvelles informations vous devriez donc avoir <strong>un d\u00e9ploiement continu de base et fonctionnel,<\/strong> avec les versions plus r\u00e9centes de Prestashop ( 1.7 , 8.0 , 8.1 &#8230; )<br \/>On va pouvoir am\u00e9liorer tout cela dans les articles suivants.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cet article est le 1er article de la s\u00e9rie sur le d\u00e9ploiement et l&rsquo;int\u00e9gration continue dans Prestashop.Les autres articles articles de cette s\u00e9ries sont les suivants : Introduction L&rsquo;essentiel de l&rsquo;article de 2017 que j&rsquo;avais \u00e9crit sur le sujet reste d&rsquo;actualit\u00e9, \u00e0 l&rsquo;exception de la version de Prestashop et de la structure globale du projet.Je [&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-3365","post","type-post","status-publish","format-standard","hentry","category-prestashop-2","tag-ci-cd","tag-gitlab","tag-prestashop"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/3365","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=3365"}],"version-history":[{"count":8,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/3365\/revisions"}],"predecessor-version":[{"id":3398,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/3365\/revisions\/3398"}],"wp:attachment":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/media?parent=3365"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/categories?post=3365"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/tags?post=3365"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}