{"id":1330,"date":"2016-04-02T11:28:26","date_gmt":"2016-04-02T09:28:26","guid":{"rendered":"http:\/\/www.h-hennes.fr\/blog\/?p=1330"},"modified":"2016-04-02T11:28:26","modified_gmt":"2016-04-02T09:28:26","slug":"optimiser-le-developpement-de-modules-prestashop-eviter-les-regressions-avec-lintegration-continue","status":"publish","type":"post","link":"https:\/\/www.h-hennes.fr\/blog\/2016\/04\/02\/optimiser-le-developpement-de-modules-prestashop-eviter-les-regressions-avec-lintegration-continue\/","title":{"rendered":"Optimiser le d\u00e9veloppement de modules Prestashop : \u00c9viter les r\u00e9gressions avec l&rsquo;int\u00e9gration continue"},"content":{"rendered":"<div class=\"entete-serie\">\n<p>Cet article fait partie de la s\u00e9rie : Optimiser le d\u00e9veloppement de modules Prestashop<\/p>\n<ol>\n<li><a href=\"https:\/\/www.h-hennes.fr\/blog\/2015\/08\/20\/optimiser-developpement-de-modules-prestashop-mise-en-place-de-lenvironnement-de-developpement\/\">Mise en place de l&rsquo;environnement de d\u00e9veloppement<\/a><\/li>\n<li><a href=\"https:\/\/www.h-hennes.fr\/blog\/2015\/08\/21\/optimiser-le-developpement-de-modules-prestashop-industrialiser-linstallation-de-prestashop-et-des-modules\/\">Industrialiser l&rsquo;installation de Prestashop et des modules<\/a><\/li>\n<li><a href=\"https:\/\/www.h-hennes.fr\/blog\/2015\/08\/28\/optimiser-le-developpement-de-modules-prestashop-tester-fonctionnellement-vos-modules-avec-phpunit-et-selenium\/\">Tester fonctionnellement vos modules avec Phpunit et Selenium<\/a><\/li>\n<li><strong>\u00c9viter les r\u00e9gressions avec l&rsquo;int\u00e9gration continue<\/strong><\/li>\n<\/ol>\n<\/div>\n<p>Pour finir notre s\u00e9rie sur le d\u00e9veloppement de modules Prestashop, nous allons nous int\u00e9resser \u00e0 l&rsquo;<em>int\u00e9gration continue<\/em>.<br \/>\nL&rsquo;objectif de celle-ci est de nous assurer que tout fonctionne correctement lorsque nous faisons \u00e9voluer notre module. ( c&rsquo;est \u00e0 dire que les changements apport\u00e9s n&rsquo;entrainent pas l&rsquo;apparition de nouveaux probl\u00e8mes ou r\u00e9gressions )<\/p>\n<p>Pour cela nous avons dans l&rsquo;\u00e9tape pr\u00e9c\u00e9dente \u00e9crits des tests fonctionnels qui sont charg\u00e9s de v\u00e9rifier que tout fonctionne correctement. Nous souhaitons donc que ces tests soient lanc\u00e9s automatiquement lors de la publication de chaque modifications.<\/p>\n<p>Plusieurs possibilit\u00e9s existent pour r\u00e9aliser ce suivi, mais je vais vous pr\u00e9senter une solution bas\u00e9e sur <strong>jenkins<br \/>\n<\/strong><\/p>\n<p><strong>Installation de jenkins<\/strong><\/p>\n<p>Pour l&rsquo;installer connectez-vous \u00e0 votre machine virtuelle et saissez les commandes suivantes :<\/p>\n<pre lang=\"bash\" escaped=\"true\">wget -q -O - https:\/\/jenkins-ci.org\/debian\/jenkins-ci.org.key | sudo apt-key add -\r\nsudo sh -c 'echo deb http:\/\/pkg.jenkins-ci.org\/debian binary\/ &gt; \/etc\/apt\/sources.list.d\/jenkins.list'\r\nsudo apt-get update\r\nsudo apt-get install jenkins<\/pre>\n<p>Puis lancer le service via la commande<\/p>\n<pre lang=\"bash\" escaped=\"true\">sudo service jenkins start\r\n<\/pre>\n<p>Une fois jenkins install\u00e9 vous pouvez y acc\u00e9der via le port 8080 , et donc via l&rsquo;adresse http:\/\/192.168.33.10:8080<\/p>\n<p><strong>Installation des modules compl\u00e9mentaires.<\/strong><\/p>\n<p>Pour pouvoir faire nos tests, il va \u00eatre n\u00e9cessaire d&rsquo;installer des plugins compl\u00e9mentaires, mais rassurez-vous c&rsquo;est relativement simple avec jenkins ! \ud83d\ude42<\/p>\n<ul>\n<li>Cliquer sur \u00ab\u00a0Administrer Jenkins\u00a0\u00bb dans la colonne de gauche<\/li>\n<li>Puis sur \u00ab\u00a0Gestion des plugins\u00a0\u00bb\n<ul>\n<li>xUnit plugin ( pour g\u00e9rer la publication des r\u00e9sultats )<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Cr\u00e9ation du projet<\/strong><\/p>\n<p>Nous pouvons donc cr\u00e9er notre nouveau projet dans jenkins.<br \/>\nDans la colonne de gauche cliquer sur \u00ab\u00a0Nouveau item\u00a0\u00bb.<br \/>\nNous pouvons appeler ce projet \u00ab\u00a0Prestashop_sample\u00a0\u00bb, et d\u00e9finir que c&rsquo;est un projet free-style.<br \/>\nPasser \u00e0 l&rsquo;\u00e9tape suivante.<\/p>\n<p>Dans le cadre de notre d\u00e9veloppement local nous n&rsquo;allons pas nous pr\u00e9occuper de outils de gestions de version, mais uniquement de l&rsquo;ex\u00e9cution de nos test de mani\u00e8re planifi\u00e9e ( 1 fois par jour )<\/p>\n<p>Pour cela dans l&rsquo;option \u00ab\u00a0Ce qui d\u00e9clenche le build\u00a0\u00bb\u00a0 :<br \/>\ncocher l&rsquo;option \u00ab\u00a0Construire p\u00e9riodiquement\u00a0\u00bb, et saisir la valeur \u00ab\u00a0@daily\u00a0\u00bb.<\/p>\n<p>Nous allons ensuite ajouter nos \u00e9tapes au build :<\/p>\n<p>\u00ab\u00a0Ex\u00e9cuter un script shell\u00a0\u00bb<br \/>\nDans ce script nous allons tout simplement nous rendre dans le dossier de notre module et ex\u00e9cuter la commande de lancement des tests ( de l&rsquo;\u00e9tape pr\u00e9c\u00e9dente ) via le code suivant :<\/p>\n<pre lang=\"bash\" escaped=\"true\">cd \/var\/www\/prestashop\/global_modules\/samplemodule\/\r\nphpunit --log-junit ${WORKSPACE}\/results.xml  #On sp\u00e9cifie juste l'emplacement des r\u00e9sultats\r\n<\/pre>\n<p>Pour finir nous allons analyser les r\u00e9sultats des tests \u00e0 la fin du build.<br \/>\nPour cela dans l&rsquo;option \u00ab\u00a0Ajouter une action apr\u00e8s le build\u00a0\u00bb, il faut s\u00e9lectionner \u00ab\u00a0Publier le rapport des r\u00e9sultats des tests JUnit\u00a0\u00bb, et mettre le fichier \u00ab\u00a0results.xml\u00a0\u00bb<\/p>\n<p>C&rsquo;est fini pour la configuration ! Sauvegarder votre projet et lancer votre premi\u00e8re build.<br \/>\nA partir de maintenant vous pourrez suivre les r\u00e9sultats de vos tests dans jenkins, et apr\u00e8s quelques builds vous obtiendrez un joli graphique tel que celui-ci qui vous permettra de suivre si votre module fonctionne bien : -)<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1332\" src=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2016\/04\/results-test.jpg\" alt=\"R\u00e9sultats tests jenkins\" width=\"500\" height=\"245\" srcset=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2016\/04\/results-test.jpg 500w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2016\/04\/results-test-300x147.jpg 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/p>\n<p>Nous arrivons \u00e0 la fin de cette s\u00e9rie sur l&rsquo;optimisation de la cr\u00e9ation de modules prestashop. J&rsquo;esp\u00e8re qu&rsquo;elle vous aura permis de gagner du temps et de l&rsquo;efficacit\u00e9 sur le d\u00e9veloppement de vos modules.<br \/>\nN&rsquo;h\u00e9sitez pas \u00e0 me signaler si des points peuvent \u00eatre am\u00e9lior\u00e9s ou revus.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cet article fait partie de la s\u00e9rie : Optimiser le d\u00e9veloppement de modules Prestashop Mise en place de l&rsquo;environnement de d\u00e9veloppement Industrialiser l&rsquo;installation de Prestashop et des modules Tester fonctionnellement vos modules avec Phpunit et Selenium \u00c9viter les r\u00e9gressions avec l&rsquo;int\u00e9gration continue Pour finir notre s\u00e9rie sur le d\u00e9veloppement de modules Prestashop, nous allons nous [&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":"default","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":[361,430,104],"class_list":["post-1330","post","type-post","status-publish","format-standard","hentry","category-prestashop-2","tag-modules","tag-optimisation","tag-prestashop"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1330","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=1330"}],"version-history":[{"count":4,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1330\/revisions"}],"predecessor-version":[{"id":1336,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1330\/revisions\/1336"}],"wp:attachment":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/media?parent=1330"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/categories?post=1330"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/tags?post=1330"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}