SlideShare a Scribd company logo
1 of 31
Download to read offline
L’intégration continue
pour tous
Meetup Drupal Lyon - 26/03/2015
L’intégration continue, c’est quoi ?
• Vérification des régressions de code
• Détection des problèmes d'intégration
• Automatisation de l'exécution des suites
de tests existants
On parle souvent de
Continuous Integration (CI)
Quelques acteurs
Team City Travis CIJenkins
En théorie, la CI c’est...
Crédit simple-talk.com
Mais ça ressemble plutôt à ça...
Crédit blog.assembla.com
Workflow technique
• Nouveau commit sur la branche master
• Serveur centralisé de CI tente de
‘construire’ le produit
• 'Construire' c'est compiler, exécuter des
tests unitaires, tests d'integration, QA,
etc.
• Le résultat est soit un succès, soit un
échec
Quelques constats
• La CI n’a d’intérêt qu’avec une équipe de
dév très active et organisée
• Il est nécessaire de connaître et maintenir
des outils métier pointus
• D’un concept formidable, on rentre
rapidement dans une forte rigidité
• Beaucoup d’équipes finissent par ignorer
le statut des builds
Mais alors...
...ce n’est pas pour tout le monde ?
Pensez master en lecture seule
● Personne ne devrait pouvoir fusionner de
branche avec master directement
○ Chaque développeur devrait pouvoir
invoquer un script d'intégration qui :
■ Fusionne (merge)
■ Teste
■ Commit uniquement si la build passe
Avantages pour le développeur
• On ne casse rien
• On n'impacte pas son équipe
• On ne culpabilise pas
• Le Product Owner peut sortir une nouvelle
version du produit à tout moment
Bref, on sort un meilleur produit !
Repartons des bases
● Outre la CI est-ce que vous :
○ Utilisez le contrôle de versions ?
○ Automatisez vos builds ?
○ Ecrivez des tests unitaires pour vos
modules ?
○ Testez votre code PHP et testez les
régressions visuelles/fonctionnelles ?
Créons notre propre définition
“L’intégration continue pour tous consiste à
exécuter rigoureusement toutes les bonnes
pratiques de développement logiciel afin
d’avoir un code sous contrôle de versions,
testé, fiable et prêt à être mis en
production.”
Workflow Git typique (Github)
Nouvelle branche Pull Request
Commits Revue de code
Merge & Deploy
Crédit Github
CI
Git hooks
Les classiques Drupal 7
● Drush make
● Features
● Strongarm
● Default config
● Configuration Management
● WF Tools
Et Drupal 8 ? A vous de jouer !
CMI
Crédit mcphee.com
?
?
?
?
?
Tester, c’est bon. Mangez-en !
● Jusqu’à Drupal 7
○ Simpletest
● Depuis Drupal 8
○ Simpletest (héritage)
○ PHPUnit
○ Mink
○ Goutte
Reliés par le Mink/Goutte driver
Simpletest dans le code
Assertions
Définition de
l’extension de
WebTestBase
Extension de classe custom
Simpletest dans l’admin Drupal
Simpletest depuis le terminal
• Pensez à définir un alias de terminal !
alias test="php ./core/scripts/run-tests.sh --color --verbose"
• Vous pouvez également utiliser drush test-run
PHPUnit dans le code
PHPUnit depuis le terminal
Pensez à définir un alias de terminal !
alias phpunit="./core/vendor/phpunit/phpunit/phpunit"
Attention à la lenteur de --coverage-html <path> !
Rapports PHPUnit
CRAP: Change Risk Anti-Patterns
Le futur du drupaliste c’est quoi ?
● Obtenir une couverture de code PHP
maximale via PHPUnit
● Remplacer Simpletest par Mink ou un
autre outil d’automatisation de navigateur
○ Selenium
○ Sahi
○ Huxley
○ ...
Tester du bon code, c’est mieux
● Drupal Coding Standards
● Coder
● PAReview.sh
● Drupal Code Quality
● Writing secure code
● Security Review
N’oubliez pas composer !
Packagist pour trouver
des librairies
ou…
$ composer search <pkg>
Drupal 8
./core/composer.json
Merci Composer Manager
Initialiser Composer Manager
$ php scripts/init.sh
Télécharger des dépendances
$ cd core
$ sudo composer drupal-update
Et côté outils serveur ?
* LXC - Linux containers
*
Ne négligez pas l’orchestration !
Prêt pour l’intégration continue ?
Merci. Questions ?

More Related Content

What's hot

What's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsWhat's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsZenikaOuest
 
Jenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerJenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerGeeks Anonymes
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924Gregory Boissinot
 
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsPetit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsOCTO Technology
 
Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Amélie DUVERNET
 
Jenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteJenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteStephane Couzinier
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIHugo Hamon
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipelineNicolas wallerand
 
Des principes de la démarche DevOps à sa mise en oeuvre
Des principes de la démarche DevOps à sa mise en oeuvreDes principes de la démarche DevOps à sa mise en oeuvre
Des principes de la démarche DevOps à sa mise en oeuvreStephane Manciot
 
BBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetBBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetOlivier BAZOUD
 
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes PratiquesEmmanuel Hugonnet
 
NightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous DeliveryNightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous DeliveryZenika
 
DODMTL 2019 - Agile et DevOps chez Croesus
DODMTL 2019 - Agile et DevOps chez CroesusDODMTL 2019 - Agile et DevOps chez Croesus
DODMTL 2019 - Agile et DevOps chez CroesusMartin Deslongchamps
 
NightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery AvancéNightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery AvancéZenika
 
Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Sylvain Leroy
 
DevOps : mission [im]possible ?
DevOps : mission [im]possible ?DevOps : mission [im]possible ?
DevOps : mission [im]possible ?rfelden
 
Integrons en mode continu
Integrons en mode continuIntegrons en mode continu
Integrons en mode continuneuros
 

What's hot (20)

Jenkins Workflow
Jenkins WorkflowJenkins Workflow
Jenkins Workflow
 
What's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsWhat's Next Replay - IC / Jenkins
What's Next Replay - IC / Jenkins
 
Jenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerJenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagner
 
JENKINS_BreizhJUG_20111003
JENKINS_BreizhJUG_20111003JENKINS_BreizhJUG_20111003
JENKINS_BreizhJUG_20111003
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924
 
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsPetit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
 
Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.
 
Jenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteJenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverte
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CI
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
 
Des principes de la démarche DevOps à sa mise en oeuvre
Des principes de la démarche DevOps à sa mise en oeuvreDes principes de la démarche DevOps à sa mise en oeuvre
Des principes de la démarche DevOps à sa mise en oeuvre
 
BBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetBBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - Puppet
 
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
 
NightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous DeliveryNightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous Delivery
 
DODMTL 2019 - Agile et DevOps chez Croesus
DODMTL 2019 - Agile et DevOps chez CroesusDODMTL 2019 - Agile et DevOps chez Croesus
DODMTL 2019 - Agile et DevOps chez Croesus
 
NightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery AvancéNightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery Avancé
 
Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Rappels Modularisation application C/C++
Rappels Modularisation application C/C++
 
DevOps : mission [im]possible ?
DevOps : mission [im]possible ?DevOps : mission [im]possible ?
DevOps : mission [im]possible ?
 
Symposium TFS - DevOps avec Microsoft
Symposium TFS - DevOps avec MicrosoftSymposium TFS - DevOps avec Microsoft
Symposium TFS - DevOps avec Microsoft
 
Integrons en mode continu
Integrons en mode continuIntegrons en mode continu
Integrons en mode continu
 

Viewers also liked

Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cacheMeetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cacheAurelien Navarre
 
Meetup Drupal Lyon - Sécuriser un site drupal
Meetup Drupal Lyon - Sécuriser un site drupalMeetup Drupal Lyon - Sécuriser un site drupal
Meetup Drupal Lyon - Sécuriser un site drupalAurelien Navarre
 
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8Aurelien Navarre
 
Configuration Management avec Drupal 8
Configuration Management avec Drupal 8Configuration Management avec Drupal 8
Configuration Management avec Drupal 8Aurelien Navarre
 
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...Aurelien Navarre
 
DrupalCamp Lyon 2012 - Optimiser les performances Drupal depuis les tranchées
DrupalCamp Lyon 2012 -  Optimiser les performances Drupal depuis les tranchéesDrupalCamp Lyon 2012 -  Optimiser les performances Drupal depuis les tranchées
DrupalCamp Lyon 2012 - Optimiser les performances Drupal depuis les tranchéesAurelien Navarre
 
Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Aurelien Navarre
 
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015Stephane Manciot
 
Export procedures for agro based products
Export procedures for agro based productsExport procedures for agro based products
Export procedures for agro based productsDiraviam Jayaraj
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et DockerStephane Manciot
 
Intégration continue & Qualité logicielle
Intégration continue & Qualité logicielleIntégration continue & Qualité logicielle
Intégration continue & Qualité logicielleDavid Buros
 

Viewers also liked (12)

Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cacheMeetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
 
Meetup Drupal Lyon - Sécuriser un site drupal
Meetup Drupal Lyon - Sécuriser un site drupalMeetup Drupal Lyon - Sécuriser un site drupal
Meetup Drupal Lyon - Sécuriser un site drupal
 
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
 
Configuration Management avec Drupal 8
Configuration Management avec Drupal 8Configuration Management avec Drupal 8
Configuration Management avec Drupal 8
 
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
 
DrupalCamp Lyon 2012 - Optimiser les performances Drupal depuis les tranchées
DrupalCamp Lyon 2012 -  Optimiser les performances Drupal depuis les tranchéesDrupalCamp Lyon 2012 -  Optimiser les performances Drupal depuis les tranchées
DrupalCamp Lyon 2012 - Optimiser les performances Drupal depuis les tranchées
 
Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13
 
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
 
Export procedures for agro based products
Export procedures for agro based productsExport procedures for agro based products
Export procedures for agro based products
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
 
Démo puppet et état du projet
Démo puppet et état du projetDémo puppet et état du projet
Démo puppet et état du projet
 
Intégration continue & Qualité logicielle
Intégration continue & Qualité logicielleIntégration continue & Qualité logicielle
Intégration continue & Qualité logicielle
 

Similar to L'integration continue pour tous

Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logicielsSylvain Leroy
 
Processus d’intégration continue et outils
Processus d’intégration continue et outilsProcessus d’intégration continue et outils
Processus d’intégration continue et outilsAgile Tour 2009 Québec
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOpsMicrosoft
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptMichael Akbaraly
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringneuros
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyFrançois Petitit
 
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...Publicis Sapient Engineering
 
Qualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidQualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidThibaud CAVIN
 
Vincent Biret Societic devops Sherbrooke
Vincent Biret Societic devops SherbrookeVincent Biret Societic devops Sherbrooke
Vincent Biret Societic devops SherbrookeVincent Biret
 
DevMobCA: Continuous integration
DevMobCA: Continuous integrationDevMobCA: Continuous integration
DevMobCA: Continuous integrationOlivier Destrebecq
 
Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php ALTER WAY
 
Introduction au DevOps @SfPot 2014
Introduction au DevOps @SfPot 2014Introduction au DevOps @SfPot 2014
Introduction au DevOps @SfPot 2014Jonathan Martin
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement MicrosoftChristophe HERAL
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyonClement Bouillier
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
 
Formation devops par la pratique
Formation devops par la pratiqueFormation devops par la pratique
Formation devops par la pratiqueKhaled Ben Driss
 
Qs181 g formation-ibm-rational-synergy-build-manager
Qs181 g formation-ibm-rational-synergy-build-managerQs181 g formation-ibm-rational-synergy-build-manager
Qs181 g formation-ibm-rational-synergy-build-managerCERTyou Formation
 
L'intégration continue avec Bitrise
L'intégration continue avec BitriseL'intégration continue avec Bitrise
L'intégration continue avec BitriseCocoaHeads France
 

Similar to L'integration continue pour tous (20)

Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
Processus d’intégration continue et outils
Processus d’intégration continue et outilsProcessus d’intégration continue et outils
Processus d’intégration continue et outils
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOps
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoring
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacy
 
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
 
Qualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidQualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & Android
 
Dev opsday case study
Dev opsday   case studyDev opsday   case study
Dev opsday case study
 
Vincent Biret Societic devops Sherbrooke
Vincent Biret Societic devops SherbrookeVincent Biret Societic devops Sherbrooke
Vincent Biret Societic devops Sherbrooke
 
DevMobCA: Continuous integration
DevMobCA: Continuous integrationDevMobCA: Continuous integration
DevMobCA: Continuous integration
 
Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php
 
Introduction au DevOps @SfPot 2014
Introduction au DevOps @SfPot 2014Introduction au DevOps @SfPot 2014
Introduction au DevOps @SfPot 2014
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyon
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Formation devops par la pratique
Formation devops par la pratiqueFormation devops par la pratique
Formation devops par la pratique
 
Qs181 g formation-ibm-rational-synergy-build-manager
Qs181 g formation-ibm-rational-synergy-build-managerQs181 g formation-ibm-rational-synergy-build-manager
Qs181 g formation-ibm-rational-synergy-build-manager
 
L'intégration continue avec Bitrise
L'intégration continue avec BitriseL'intégration continue avec Bitrise
L'intégration continue avec Bitrise
 

L'integration continue pour tous

  • 1.
  • 3. L’intégration continue, c’est quoi ? • Vérification des régressions de code • Détection des problèmes d'intégration • Automatisation de l'exécution des suites de tests existants On parle souvent de Continuous Integration (CI)
  • 4. Quelques acteurs Team City Travis CIJenkins
  • 5. En théorie, la CI c’est... Crédit simple-talk.com
  • 6. Mais ça ressemble plutôt à ça... Crédit blog.assembla.com
  • 7. Workflow technique • Nouveau commit sur la branche master • Serveur centralisé de CI tente de ‘construire’ le produit • 'Construire' c'est compiler, exécuter des tests unitaires, tests d'integration, QA, etc. • Le résultat est soit un succès, soit un échec
  • 8. Quelques constats • La CI n’a d’intérêt qu’avec une équipe de dév très active et organisée • Il est nécessaire de connaître et maintenir des outils métier pointus • D’un concept formidable, on rentre rapidement dans une forte rigidité • Beaucoup d’équipes finissent par ignorer le statut des builds
  • 9. Mais alors... ...ce n’est pas pour tout le monde ?
  • 10. Pensez master en lecture seule ● Personne ne devrait pouvoir fusionner de branche avec master directement ○ Chaque développeur devrait pouvoir invoquer un script d'intégration qui : ■ Fusionne (merge) ■ Teste ■ Commit uniquement si la build passe
  • 11. Avantages pour le développeur • On ne casse rien • On n'impacte pas son équipe • On ne culpabilise pas • Le Product Owner peut sortir une nouvelle version du produit à tout moment Bref, on sort un meilleur produit !
  • 12. Repartons des bases ● Outre la CI est-ce que vous : ○ Utilisez le contrôle de versions ? ○ Automatisez vos builds ? ○ Ecrivez des tests unitaires pour vos modules ? ○ Testez votre code PHP et testez les régressions visuelles/fonctionnelles ?
  • 13. Créons notre propre définition “L’intégration continue pour tous consiste à exécuter rigoureusement toutes les bonnes pratiques de développement logiciel afin d’avoir un code sous contrôle de versions, testé, fiable et prêt à être mis en production.”
  • 14. Workflow Git typique (Github) Nouvelle branche Pull Request Commits Revue de code Merge & Deploy Crédit Github CI Git hooks
  • 15. Les classiques Drupal 7 ● Drush make ● Features ● Strongarm ● Default config ● Configuration Management ● WF Tools
  • 16. Et Drupal 8 ? A vous de jouer ! CMI Crédit mcphee.com ? ? ? ? ?
  • 17. Tester, c’est bon. Mangez-en ! ● Jusqu’à Drupal 7 ○ Simpletest ● Depuis Drupal 8 ○ Simpletest (héritage) ○ PHPUnit ○ Mink ○ Goutte Reliés par le Mink/Goutte driver
  • 18. Simpletest dans le code Assertions Définition de l’extension de WebTestBase Extension de classe custom
  • 20. Simpletest depuis le terminal • Pensez à définir un alias de terminal ! alias test="php ./core/scripts/run-tests.sh --color --verbose" • Vous pouvez également utiliser drush test-run
  • 22. PHPUnit depuis le terminal Pensez à définir un alias de terminal ! alias phpunit="./core/vendor/phpunit/phpunit/phpunit" Attention à la lenteur de --coverage-html <path> !
  • 23. Rapports PHPUnit CRAP: Change Risk Anti-Patterns
  • 24. Le futur du drupaliste c’est quoi ? ● Obtenir une couverture de code PHP maximale via PHPUnit ● Remplacer Simpletest par Mink ou un autre outil d’automatisation de navigateur ○ Selenium ○ Sahi ○ Huxley ○ ...
  • 25. Tester du bon code, c’est mieux ● Drupal Coding Standards ● Coder ● PAReview.sh ● Drupal Code Quality ● Writing secure code ● Security Review
  • 26. N’oubliez pas composer ! Packagist pour trouver des librairies ou… $ composer search <pkg> Drupal 8 ./core/composer.json
  • 27. Merci Composer Manager Initialiser Composer Manager $ php scripts/init.sh Télécharger des dépendances $ cd core $ sudo composer drupal-update
  • 28. Et côté outils serveur ? * LXC - Linux containers *
  • 29. Ne négligez pas l’orchestration !