Intégration Continue PHP avec Jenkins CIHugo Hamon
Comment assurer le suivi qualite du code source d'une application web? Ce n'est pas une tache aisée ! C’est d’autant plus vrai que PHP est encore considéré aujourd'hui comme un langage peu professionnel. PHP est pourtant un langage dont l'outillage n'a rien a envier a l'ensemble de ses concurrents. L'objectif de cette conférence est de présenter les bonnes pratiques à adopter ainsi que les différents outils a mettre en oeuvre afin de contrôler la qualité d'un projet PHP au quotidien. Un focus particulier sera porté sur la plateforme d'intégration continue Jenkins, les tests unitaires ou bien encore la récupération et l'interprétation des métriques collectées.
Une usine logicielle est un ensemble d’outils pré-configurés, de frameworks, de conventions, de processus, de documentations et de modèles de projets qui structurent les développeurs et leurs développements.
L’objectif est d’automatiser au maximum la production et la maintenance des applications afin d’améliorer leur qualité et le « time to market ».
Plutôt que de parler CI d'entreprise et de rentrer dans les détails de Jenkins et du workflow typique d'un équipe de dév, pourquoi ne pas déjà aborder toutes les bonnes pratiques et méthodologies à employer pour soi-même créer un produit testé et fiable ? Bienvenue dans l'intégration continue pour tous !
Déploiement PHP : de l'âge de pierre à nos jours.Amélie DUVERNET
Aujourd'hui, le terme "déploiement" est un incontournable dans le métier des devOps. Comment en sommes-nous arrivés à intégrer au mieux les mises en prod ? Faisons un bref historique pour ensuite terminer sur les nouvelles techniques de déploiement de nos applications PHP et leur mise en place dans l'intégration continue.
Intégration Continue PHP avec Jenkins CIHugo Hamon
Comment assurer le suivi qualite du code source d'une application web? Ce n'est pas une tache aisée ! C’est d’autant plus vrai que PHP est encore considéré aujourd'hui comme un langage peu professionnel. PHP est pourtant un langage dont l'outillage n'a rien a envier a l'ensemble de ses concurrents. L'objectif de cette conférence est de présenter les bonnes pratiques à adopter ainsi que les différents outils a mettre en oeuvre afin de contrôler la qualité d'un projet PHP au quotidien. Un focus particulier sera porté sur la plateforme d'intégration continue Jenkins, les tests unitaires ou bien encore la récupération et l'interprétation des métriques collectées.
Une usine logicielle est un ensemble d’outils pré-configurés, de frameworks, de conventions, de processus, de documentations et de modèles de projets qui structurent les développeurs et leurs développements.
L’objectif est d’automatiser au maximum la production et la maintenance des applications afin d’améliorer leur qualité et le « time to market ».
Plutôt que de parler CI d'entreprise et de rentrer dans les détails de Jenkins et du workflow typique d'un équipe de dév, pourquoi ne pas déjà aborder toutes les bonnes pratiques et méthodologies à employer pour soi-même créer un produit testé et fiable ? Bienvenue dans l'intégration continue pour tous !
Déploiement PHP : de l'âge de pierre à nos jours.Amélie DUVERNET
Aujourd'hui, le terme "déploiement" est un incontournable dans le métier des devOps. Comment en sommes-nous arrivés à intégrer au mieux les mises en prod ? Faisons un bref historique pour ensuite terminer sur les nouvelles techniques de déploiement de nos applications PHP et leur mise en place dans l'intégration continue.
Jenkins Workflow plugin lets you write Jenkins jobs as pipelines using the Groovy programming language
Talk given in french at the Lyon JUG - 15/12/2015
Le Test Driven Infrastructure, c'est un peu le TDD pour les projets DevOps. Il va vous permettre de tester votre infrastructure unitairement, de bout en bout et à chaque changement.
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsOCTO Technology
Depuis deux ans, une nouvelle vague technologique submerge le paysage des applications Web : les architectures MV* côté client.
L’écosystème Web, enfin mature, offre l’opportunité d’avoir des interfaces riches et une meilleure expérience utilisateur grâce à la génération des écrans et la gestion des interactions côté client. En ne gérant plus l’affichage mais uniquement l’envoi des données brutes, le serveur se concentre sur des APIs métier mutualisables avec des applications mobiles notamment.
Venez découvrir au travers d’un retour d’expérience commun entre OCTO et ING Direct, acteur majeur de la banque en ligne en France, la réalisation d’une des toutes premières WebApp mobile multi-plateformes dans le milieu bancaire reposant sur ces nouvelles architectures Web.
Compte-rendu du petit-déjeuner : http://bit.ly/1g2nEnU
...par Dimitri Durieux (CETIC) le 23 septembre 2015.
Jenkins est un outil open source d'automatisation de tâches et d'intégration continue, relativement facile à mettre en oeuvre, et qui permet de gagner du temps sur toutes les étapes automatiques de la production de logiciel : build, lancement de tests unitaire, qualité de code...
Un bon outil à connaître et à installer tôt, pour gagner du temps ensuite !
Formation Spring Avancé gratuite par Ippon 2014Ippon
Spring est le principal framework de développement Java utilisé en entreprise. Ce succès tient au fait qu'il permet de développer facilement et rapidement des applications robustes, légères et bien testées.
Apprécié également par les cellules d'architecture et les DSI, Spring permet d'avoir des applications bien découpées en couches, facilement maintenables et évolutives.
Cependant, si une configuration Spring simple est à la portée de tous, avoir une architecture Spring correcte, en comprendre le fonctionnement interne et connaître les fonctionnalités avancées du framework sont des tâches nettement plus ardues.
L'objectif de cette formation est de donner les bonnes bases pour comprendre les principaux aspects de Spring, de manière à ce que les participants soient capables de :
- Développer une application Spring complète (persistance, métier, validation, transactions, sécurité, Web, Ajax...).
- Comprendre le fonctionnement interne de Spring et donc être autonomes lorsqu'un bug ou une situation anormale se produit.
- Avoir intégré la philosophie de développement Spring, afin de pouvoir facilement prendre en main un sous-projet ou une fonctionnalité Spring qu'ils ne connaissent pas encore.
Puppet est un outil de gestion de configuration et de déploiement. Découvrez ce fameux mouvement DevOps, et quelles sont les raisons qui font le succès de Puppet.
Bonnes pratiques de developpement en PHPPascal MARTIN
Du haut de ses 14 ans, PHP est devenu une technologie utilisée pour de gros projets ; ce qui signifie besoins importants en termes de qualité, de robustesse, et d'outils de développement fiables.
Contrôle de sources, normes de codage, utilisation de Frameworks, documentation, tests unitaires / fonctionnels automatisés, intégration continue, déploiement, ...
Cette présentation a pour but d'introduire quelques bonnes pratiques de développement, ainsi que des outils permettant de les mettre en place sur des projets PHP.
This 2-day training course covers Behavior Driven Development (BDD) and automation testing using the Behat and Mink frameworks. Day 1 includes an overview of BDD, the Behat tool, and the Gherkin language. It demonstrates setting up a Behat project, writing feature files with scenarios, and implementing step definitions. Day 2 focuses on more advanced topics like the Mink library for web testing, configuration options, and best practices for BDD. Attendees will learn how to write automated tests for a website using Behat and execute them on the command line or within a browser. The course is suitable for testers and developers interested in BDD and gaining skills in PHP, Behat, and M
Jenkins Workflow plugin lets you write Jenkins jobs as pipelines using the Groovy programming language
Talk given in french at the Lyon JUG - 15/12/2015
Le Test Driven Infrastructure, c'est un peu le TDD pour les projets DevOps. Il va vous permettre de tester votre infrastructure unitairement, de bout en bout et à chaque changement.
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsOCTO Technology
Depuis deux ans, une nouvelle vague technologique submerge le paysage des applications Web : les architectures MV* côté client.
L’écosystème Web, enfin mature, offre l’opportunité d’avoir des interfaces riches et une meilleure expérience utilisateur grâce à la génération des écrans et la gestion des interactions côté client. En ne gérant plus l’affichage mais uniquement l’envoi des données brutes, le serveur se concentre sur des APIs métier mutualisables avec des applications mobiles notamment.
Venez découvrir au travers d’un retour d’expérience commun entre OCTO et ING Direct, acteur majeur de la banque en ligne en France, la réalisation d’une des toutes premières WebApp mobile multi-plateformes dans le milieu bancaire reposant sur ces nouvelles architectures Web.
Compte-rendu du petit-déjeuner : http://bit.ly/1g2nEnU
...par Dimitri Durieux (CETIC) le 23 septembre 2015.
Jenkins est un outil open source d'automatisation de tâches et d'intégration continue, relativement facile à mettre en oeuvre, et qui permet de gagner du temps sur toutes les étapes automatiques de la production de logiciel : build, lancement de tests unitaire, qualité de code...
Un bon outil à connaître et à installer tôt, pour gagner du temps ensuite !
Formation Spring Avancé gratuite par Ippon 2014Ippon
Spring est le principal framework de développement Java utilisé en entreprise. Ce succès tient au fait qu'il permet de développer facilement et rapidement des applications robustes, légères et bien testées.
Apprécié également par les cellules d'architecture et les DSI, Spring permet d'avoir des applications bien découpées en couches, facilement maintenables et évolutives.
Cependant, si une configuration Spring simple est à la portée de tous, avoir une architecture Spring correcte, en comprendre le fonctionnement interne et connaître les fonctionnalités avancées du framework sont des tâches nettement plus ardues.
L'objectif de cette formation est de donner les bonnes bases pour comprendre les principaux aspects de Spring, de manière à ce que les participants soient capables de :
- Développer une application Spring complète (persistance, métier, validation, transactions, sécurité, Web, Ajax...).
- Comprendre le fonctionnement interne de Spring et donc être autonomes lorsqu'un bug ou une situation anormale se produit.
- Avoir intégré la philosophie de développement Spring, afin de pouvoir facilement prendre en main un sous-projet ou une fonctionnalité Spring qu'ils ne connaissent pas encore.
Puppet est un outil de gestion de configuration et de déploiement. Découvrez ce fameux mouvement DevOps, et quelles sont les raisons qui font le succès de Puppet.
Bonnes pratiques de developpement en PHPPascal MARTIN
Du haut de ses 14 ans, PHP est devenu une technologie utilisée pour de gros projets ; ce qui signifie besoins importants en termes de qualité, de robustesse, et d'outils de développement fiables.
Contrôle de sources, normes de codage, utilisation de Frameworks, documentation, tests unitaires / fonctionnels automatisés, intégration continue, déploiement, ...
Cette présentation a pour but d'introduire quelques bonnes pratiques de développement, ainsi que des outils permettant de les mettre en place sur des projets PHP.
This 2-day training course covers Behavior Driven Development (BDD) and automation testing using the Behat and Mink frameworks. Day 1 includes an overview of BDD, the Behat tool, and the Gherkin language. It demonstrates setting up a Behat project, writing feature files with scenarios, and implementing step definitions. Day 2 focuses on more advanced topics like the Mink library for web testing, configuration options, and best practices for BDD. Attendees will learn how to write automated tests for a website using Behat and execute them on the command line or within a browser. The course is suitable for testers and developers interested in BDD and gaining skills in PHP, Behat, and M
Outils et pratiques : tester une application web modernehalleck45
Introduction aux pratiques de testabilité logicielle : types de tests, outils. Présentation aux Rencontres Mondiales du Logiciel Libre 2014.
Vidéo : http://video.rmll.info/videos/tester-une-application-web-quels-outils-et-quelles-pratiques/
Alter Way's digitalks - Docker : des conteneurs pour tout faire ? ALTER WAY
Docker est un projet Open Source qui automatise le déploiement d’applications dans des conteneurs logiciels virtuels. Déjà utilisé par Google, Red Hat, RackSpace, ebay, Microsoft, Amazon, Docker rencontre un succès mondial et est en passe de révolutionner le marché du cloud et de la virtualisation.
Cette conférence a été donnée en collaboration avec Guillaume Ponçon, auteur du livre "PHP5 Best Practices". Elle évoque les outils et méthodes permettant de développer avec PHP de manière professionnelle.
Formation Usine Logicielle gratuite par Ippon 2014Ippon
Les mises en production ne sont pas condamnées à être des moments de souffrance. En apportant de la rigueur au processus de qualification du code, en automatisant un maximum de tâches et en rendant la gestion des différents environnements la plus transparente possible, cette étape ultime peut alors devenir une simple banalité.
Pour atteindre cet objectif, plusieurs aspects doivent être pris en compte, et il faut procéder avec méthode et de façon itérative.
La formation Usine Logicielle présente les différentes briques devant être mises en place pour automatiser et contrôler la production de vos livrables ainsi que leur déploiement. Illustrée par des TP lorsque dispensée par nos consultants, cette formation permet de mieux cerner les différentes étapes et leur implication technique sur les projets. Du contrôle de la qualité du code, en passant par l'automatisation de la construction des livrables, la gestion de la configuration et le provisioning des ressources sur les différents environnements, vous découvrirez les étapes essentielles à la construction d'une usine logicielle robuste, permettant de réduire le si stratégique Time To Market tout en maîtrisant le risque.
Survole de l'industrialisation pour les étudiants pour http://src-media.com/ et d'anciens étudiants.
Inspirez de http://hoa-project.net/Fr/Event/Phptour14.html pour le Slide 8.
Présentation de Maven et de son utilisation en entreprise dans le cadre du Ch'ti JUG, le 15 juin 2009.
Pourquoi Maven ? Pourquoi l'adopter ? Les bonnes et mauvaise pratiques. Son avenir ...
Les tests de securite en DevOps dans un environnement de déploiement continue - Présentation effectuée à "Open Source Summit 2016" par Christophe Villeneuve
La présentation montre qu'on n'échappe pas à la sécurité et qu'il faut anticiper cela
Avec l'arrivée des Single Page Applications avec du code côté client de plus en plus complexe il est grand temps de commencer à penser à bien tester notre code JavaScript. Aujourd'hui il existe déjà plusieurs façons d'écrire des tests côté client mais ça peut paraître encore très compliqué.
Dans cette présentation je vais montrer une solution simple et qui marche bien pour mes projets web: Node.js comme runtime, npm comme package manager, gulp comme task runner, jasmine comme librairie de test ainsi que le Task Runner Explorer de Visual Studio.
WordCamp Lyon 2015 - WordPress, Git et l'intégration continueStéphane HULARD
Retour d'expérience sur les pratiques que j'utilise au quotidien pour l'industrialisation de mes développements WordPress...
https://lyon.wordcamp.org/2015/session/wordpress-git-et-lintegration-continue/
Le Devops est un terme émergent qui décrit un ensemble de méthode et pratiques pour favoriser la collaboration et la communication entre les équipes de développement logiciel et les équipes d’exploitation. Il est une réponse au besoin des acteurs du Web qui, face à une course effreinée à la fonctionnalité et l’explosion de leur trafic, ont du modifier leurs méthodes et rassembler l’ensemble des protagonistes pour minimiser l’impact de l’applicatif sur l’infrastructure et maitriser les coûts ou améliorer la performance. Nous verons dans cette conférence comment ces différentes équipes peuvent avancer ensemble en gardant une relation de partenaire plutôt que de client/prestataire
ASP.NET MVC 6 est la prochaine version du Framework MVC de .NET. Il a pour vocation de tirer partie de la puissance de .NET tout en mettant de côté l'historique parfois pesant d'ASP.NET. Venez découvrir en quoi ASP.NET MVC 6 est un framework MVC moderne et les principales nouveautés de cette nouvelle version majeure.
Comment débuter en devops et apprendre à réaliser son premier pipeline. Très facilement et en toute simplicité.
Une formation gratuite pour s'initier au devops.
https://youtu.be/tiSfXCM8VTw
https://gitlab.com/xavki/pipeline-saison-1
Présentation à la nAcademy (Juin 2014) : Les protocles temps réels par Ezzaouia Mohamed (source original : http://fr.slideshare.net/funstyle511/les-protocles-temps-reels)
1. nAcademy Le 15 janvier 2014 Neuros -
Intégrons en mode continu
Christophe Villeneuve
2. nAcademy Le 15 janvier 2014 Neuros -
Sommaire
• Pourquoi ?
• La position dans le cycle de développement
• L'intégration continue avec les outils
• Serveur d'intégration continue
3. nAcademy Le 15 janvier 2014 Neuros -
• Mettre les bons réflexes au début du projet
• Intégration au quotidien
• Chaque intégration est vérifiée par un système automatisé
• La vérification du code tourne en tache de fond
• Détecter les erreurs d'intégration plus rapidement
• Assurer un suivi continu
• Impliquer et fixer des objectifs aux développeurs
• Possibilité de traiter plus en même temps
Intégration continue... Pourquoi c'est possible ?
4. nAcademy Le 15 janvier 2014 Neuros -
Obligations dans l'intégration continue
• Fournir des données utilisables par les développeurs
• Fournir un bilan lisible venant :
• Responsable(s)
• Client(s)
5. nAcademy Le 15 janvier 2014 Neuros -
Tests automatisés de Mike Cohn
Tests
Manuels
Tests automatisés
Tests GUI
Tests API
Tests d'intégration
Tests des composants
Tests unitaires
Orientations
Business
Développons nous le bon
système ?
Technique
Développons nous le
système correctement ?
6. nAcademy Le 15 janvier 2014 Neuros -
Méthologies
• Expliquer comment on produit le code
• Impliquer les utilisateurs dans le cycle
• Courbes d'évolutions
• Cycles de développement court
• on fait / on peaufine
• Méthodes agiles
• SCRUM, XP, Lean SD,...
• Pratiques agiles au menu
• Outils standards du marché
• Utilisation possible avec 1 cron
8. nAcademy Le 15 janvier 2014 Neuros -
L'intégration continue avec les Outils
• Composition d'une équipe
• Avant tout une question d'attitude
• S'appuie sur des outils comme gestion de version
• GIT, SVN, CSV...
• Utilisation d'outils pour la maintenance du code
• Outils de qualimétrie :
• Sonar, PMD, CheckStyle, validator W3C...
9. nAcademy Le 15 janvier 2014 Neuros -
Pdepend
✔
Pdepend signifie :
✔
PHP Depend
✔
Outil analyse de code
✔
Indicateur qualité
Outils d'analyse statique
http://pdepend.org/
10. nAcademy Le 15 janvier 2014 Neuros -
PHP Depend... en exemple
tools:
# Analyzes the size and structure of
a PHP project.
php_pdepend:
command: pdepend
configuration_file: ~
suffixes:
# Default:
- php
excluded_dirs:
# Default:
- vendor
enabled: false
<target name="pdepend">
<phpdepend file="${project.basedir}/${source}/www">
<logger type="jdepend-xml" outfile="${project.basedir}/build/logs/jdepend.xml" />
<logger type="jdepend-chart" outfile="${project.basedir}/build/pdepend/dependencies.svg" />
<logger type="overview-pyramid" outfile="${project.basedir}/build/pdepend/overview-pyramid.svg" />
</phpdepend>
</target>
Installation
Config
Par un paquet
11. nAcademy Le 15 janvier 2014 Neuros -
➢
Pdepend
➢
PHP Mess Detector
✔
Détecte certains bugs
✔
Propriété non utilisé
Outils d'analyse statique
http://phpmd.org/
12. nAcademy Le 15 janvier 2014 Neuros -
PHP Mess Detector... en exemple
cd /path/to/myproject
# Lance phpmd sur le répertoire src avec les règles contenues dans phpmd.xml
# Génère le rapport myrepport.html au format HTML
$ phpmd src html /path/to/phpmd.xml > /path/to/myreport.html
<target name="phpmd">
<phpmd file="${project.basedir}/${source}/www">
<formatter type="xml" outfile="${project.basedir}/build/phpmd.xml" />
</phpmd>
</target>
Installation
Config
pear channel-discover pear.phpmd.org
pear channel-discover pear.pdepend.org
pear install --alldeps phpmd/PHP_PMD
14. nAcademy Le 15 janvier 2014 Neuros -
PHP Copy/Paste Detector (PHP CPD)... en exemple
{
"require-dev": {
"phploc/phpcpd": "*"
}
}
wget https://phar.phpunit.de/phpcpd.phar
php phpcpd.phar
Installation
Config. jSON
$ phpcpd /www/projet_test
Execution
15. nAcademy Le 15 janvier 2014 Neuros -
➢Pdepend
➢PHP Mess Detector
➢PHP Lines Of Code
✔
Compte :
✔
Les lignes de code
✔
Nombre de structures
✔
Mesure :
✔
La taille d'un projet
Outils d'analyse statique
➢
PHP CPD
https://github.com/sebastianbergmann/phploc
16. nAcademy Le 15 janvier 2014 Neuros -
PHP Lines Of Code (PHPLoc)... en exemple
{
"require-dev": {
"phploc/phploc": "*"
}
}
wget https://phar.phpunit.de/phploc.phar
php phploc.phar
Installation
Config. jSON
$ Phploc /www/Drupal7.23
Execution
17. nAcademy Le 15 janvier 2014 Neuros -
➢
Pdepend
➢
PHP Mess Detector
➢
PHP Code Sniffer
✔
Détecte
✔
Conventions de code
✔
Norme de codage
✔
Pour avoir
✔
Code propre
✔
Cohérent
✔
Intéresse personne
Outils d'analyse statique
➢
PHP CPD
➢
PHP Lines Of Code
19. nAcademy Le 15 janvier 2014 Neuros -
PHP Doc... en exemple
<target name="phpdoc">
<phpdoc title="API Documentation"
destdir="${project.basedir}/build/api"
sourcecode="false"
output="HTML:Smarty:PHP">
<fileset dir="${project.basedir}/${source}/www">
<include name="**/*.php"/>
</fileset>
<projdocfileset dir=".">
<include name="README"/>
<include name="INSTALL"/>
<include name="CHANGELOG"/>
</projdocfileset>
</phpdoc>
</target>
pear install --alldeps PhpDocumentor
Installation
Config.
/**
* Article
* Definition de la classe Article utilisée pour le
Projet
*
* @package API
* @subpackage classes
* @author Christophe Villeneuve
* @version 2014-01-01 v30 $
*/
20. nAcademy Le 15 janvier 2014 Neuros -
➢Pdepend
➢PHP Mess Detector
➢PHP Code Beautifier
✔
Généré une vue stylée du code
✔
Evite de reformater le code
✔
Mise en avant des alertes
remontées par les outils
précédents
✔
Différentes versions :
✔
Version graphique
✔
En ligne de commande
Outils d'analyse statique
➢
PHP CPD
➢
PHP Lines Of Code
➢
PHP Code Sniffer
➢
PHPdoc
http://www.waterproof.fr/products/phpCodeBeautifier/
21. nAcademy Le 15 janvier 2014 Neuros -
PHP Code Beautifier... en exemple
<?php
if($code == BAD){$action = REWRITE;}else{$action = KEEP;}
for($i=0; $i<10;$i++){while($j>0){$j++;doCall($i+$j);if($k){$k/=10;}}}
?>
Code original
Code final :
<?php
if ($code == BAD) {
$action = REWRITE;
} else {
$action = KEEP;
}
for($i = 0; $i < 10;$i++) {
while ($j > 0) {
$j++;
doCall($i + $j);
if ($k) {
$k /= 10;
}
}
}
?>
22. nAcademy Le 15 janvier 2014 Neuros -
✔
Framework
✔
Zend, Symfony,...
✔
CMS
✔
Drupal
✔
Librairie externe
✔
Pecl, Pear
✔
Taille / poids
✔
Milliers de lignes de codes
✔
Ne pas mesurer la qualité
de ces produits
✔
Exclure tout ce qui ne vous
appartient pas
✔
Les applications modernes Les dérapages
Attention... Aux applications modernes
Délais de contrôle > 24 H
24. nAcademy Le 15 janvier 2014 Neuros -
Serveurs d'intégration continue possible
• Gestionnaire de versions
• GIT, SVN, CSV...
• Serveurs intégration continue :
• Jenkins, CriseControl, Phing
• Gestionnaires de dépendances :
• Maven, Ivy
• Assemblage et building :
• Maven, Ant
• Outils de test :
• PHPUnit, Selenium
• Outils de qualimétrie :
• Sonar, PMD, CheckStyle, validator W3C...
25. nAcademy Le 15 janvier 2014 Neuros -
Serveurs d'intégration continue... Disponible
• Cruise Control + PHPUnderControl
• Cruire Control + Ant / Maven
• Xinc + Phing
• Gerkin+Behat+Mint VS Gerkin+Cucumber+Sahi
• Jenkins +...
•
Fichiers PHP
•
Shell
•
Batch
•
Fichiers PHP
•
Shell
•
Batch
26. nAcademy Le 15 janvier 2014 Neuros -
✔
Dev. petite fonction
✔
Tache peut importante
✔
Simple
✔
Délais : ½ journée
✔
Récupération code (SVN)
✔
Réalisation du Dev
✔
Batteries de tests
✔
Exécute une construction
automatisé en local
✔
Et le compile
✔
Résultat
✔
Comit
✔
Idem serveur Recette
Outil (slide précédent) Déroulement
Serveur intégration continue
27. nAcademy Le 15 janvier 2014 Neuros -
Les pratiques d'un serveur d'intégration continue
• Maintenir un dépôt unique versionné
• Automatiser la construction
• Rendre la construction auto-testable
• Tout le monde propage son activité chaque jour
• Déclencher la construction à chaque propagation
(serveur intégration)
• Maintenir une construction rapide
• Tester de nouveau sur un serveur de PreProd
• Rendre disponible rapidement les nouveautés
• C'est transparent
•
29. nAcademy Le 15 janvier 2014 Neuros -
Présentation Behat
• Behat
• Framework Behavior Driven Development (BDD) pour PHP
• Méthode Agile
• Orienté Métier
• Utilise Gerkin Syntaxe
– (Décrit le comportement d'une API sans s'occupe des détails de
l'implémentation)
30. nAcademy Le 15 janvier 2014 Neuros -
Principe BDD (Behavior Driven Development)
→ Gestion d'un caddie identifié
• Scénario :
– Etant donné que j'ai un caddie
– Et que le caddie doit être vide
– Quand j'ajoute 1 produit
– Alors le résultat = 1
– Quand j'ajoute 10 produits
– Alors j'obtiens 11 produits
– Quand je retire 20 produits à mon caddie
– Alors je dois avoir le message 'Vous n'avez pas...'
32. nAcademy Le 15 janvier 2014 Neuros -
Utilisation par le code (1/2)
<!--?php
use BehatBehatContextClosuredContextInterface,
BehatBehatContextBehatContext,
BehatBehatExceptionPendingException;
use BehatGherkinNodePyStringNode,
BehatGherkinNodeTableNode;
class FeatureContext extends BehatContext
{
public function queJeSuisUnClient() {
if(is_null($this->_account)) {
$this->_account = new Account;
}
}
...
}
33. nAcademy Le 15 janvier 2014 Neuros -
Utilisation par le code (2/2)
Scénario Outline
Given si j'ai un caddie
When jAjouteProduit(1)
Then jObtiensUn
Given je vide mon caddie
When jEssayeDeRetirerPlusDeProduit()
Then jObtiensUnMessage
/**
* @Given /^si jai un caddie$/
*/
public function jAjouteProduit($qte) {
$this->_account->addCaddy($qte);
}
/**
* @Given /^je retire "([^"]*)" produit$/
*/
public function jeRetireProduit($qte) {
$this->_account->takeCaddy($qte);
}
/**
* @Given /^je vide mon caddie $/
*/
public function jEssayeDeRetirerPlusDePorduit() {
try {
$this->_account->setTotalQte(11);
$this->_account->takeCaddy(20);
} catch (Exception $e) {
$this->_lastException = $e;
}
}
34. nAcademy Le 15 janvier 2014 Neuros -
Présentation Mink
Mink
• Framework de tests de recette
• Abstraction du navigateur et du driver
– Goutte
– Selenium
– Zombie
35. nAcademy Le 15 janvier 2014 Neuros -
Utilisation
• sudo pear install behat/mink-beta
36. nAcademy Le 15 janvier 2014 Neuros -
Utilisation par le code
require_once 'mink/autoload.php';
class FeatureContext extends BehatMinkBehatContextMinkContext {
/**
* @Given /^Je suis identifie "([^"]*)"$/
*/
public function jeSuisIdentifie($username)
{
return array(
new StepGiven('I go to "login.php"')
,new StepWhen("I fill in 'Mon nom' with '$username' ")
,new StepWhen("I fill in 'Mon mot de passe' with '$password' ")
,new StepWhen('I press "Login"')
);
}
}
37. nAcademy Le 15 janvier 2014 Neuros -
Bien sur....
Framework / CMS
+
Behat
+
Mink
+
Selenium
+
PHPUnit
38. nAcademy Le 15 janvier 2014 Neuros -
Association serveur d'intégration continue
• Tests Unitaires
• PHPUnit, jUnit...
• Autres modes de tests
• Fonctionnels
• Deploiement
• Jenkins
• Versionning
• ...
39. nAcademy Le 15 janvier 2014 Neuros -
En résumé... intégration continue
• Peu de mise en place
• Pas d'implication de l'utilisateur/client
• Possibilité de valoriser la qualité auprès des clients
40. nAcademy Le 15 janvier 2014 Neuros -
L'intégration...
Questions ? @hellosct1
Peut aussi se faire par la fête