SlideShare une entreprise Scribd logo
Integration continueIntegration continue
et autres distractionset autres distractions
Olivier ETIENNE - OrangeOlivier ETIENNE - Orange
2
Plan
● Théorie
– Le cycle de développement
– Les contraintes actuelles
– Les pratiques associées
– …
● Jenkins au coeur de l'automatisation
● Exemple de mise en oeuvre
3
Contexte du développement logiciel
● Cycle en V
● Cycles courts / Iteration
4
Le cycle en V favorise l'effet tunnelLe cycle en V favorise l'effet tunnelLe cycle en V favorise l'effet tunnelLe cycle en V favorise l'effet tunnel
5
Contexte du développement logiciel
● Cycles courts / Iteration
6
Contexte du développement logiciel
Cycles courts
Cycles V
7
Contraintes du marché
Deployer vite et souvent
– Etsy : 25 / jour
– Github : 25 /jour
– Facebook : 2 / jour
– Flickr : 10 / jour
– Google : 2-3 / semaine
8
Et nous ?
● TTM
● Concurrence forte
● Etre les premiers à innover
● Besoin d'étaler la validation
Nous avons
presque les même
attentes que les
géants du WEB !
9
OK et donc...
... comment livrer plus vite jours en prod ???
● Quelques pistes :
– Changement d'état d'esprit : Cargo → Hors-bord
– DEVOPS
– Automatisation de la forge logicielle
– Automatisation des tests
10
Changement d'état d'esprit
Le hors-bord
✔ Rapide
✔ Faible capacité
✔ Courte distance couverte
✔ Manoeuvrable
Le hors-bord soft
✔ Vite sur le marché
✔ Faible quantité / impact
✔ Rollback rapide
✔ Changements vite effectués
Le hors-bord soft
✔ Vite sur le marché
✔ Faible quantité / impact
✔ Rollback rapide
✔ Changements vite effectués
11
DEVOPS
plan code build test
release deploy operate monitor
12
Devs vs Ops
13
Deployer plus vite
✖✖✔✔
à quel prix ?
14
Le cycle de développement
CodeCode
CompileCompile
Unit TestsUnit Tests
Integ. TestsInteg. Tests
Load TestsLoad Tests
ReleaseRelease
DeployDeploy
CommitCommit
TESTTEST
DEVDEV
DEPLOYDEPLOY
15
What if...
CodeCode
CompileCompile
Unit TestsUnit Tests
Integ. TestsInteg. Tests
Load TestsLoad Tests
ReleaseRelease
DeployDeploy
CommitCommit
Equipe
> 10
Multi site
Eco
système
complèxe
> 100
commit/j
16
What if...
CodeCode
CompileCompile
Unit TestsUnit Tests
Integ. TestsInteg. Tests
Load TestsLoad Tests
ReleaseRelease
DeployDeploy
CommitCommit
0,5j
10'
1h
>12h
17
Mais aussi, pour être sûr
CodeCode
CompileCompile
Unit TestsUnit Tests
Integ. TestsInteg. Tests
Load TestsLoad Tests
ReleaseRelease
DeployDeploy
CommitCommit
Règle de
codage
Audit de
qualité
Couverture
de code
Consommation
de ressources
J'ai scriptéJ'ai scripté
19
Jenkins
20
Qu'est-ce qu'une SW Factory ?
● Chaine d'assemblage d'une usine
● Besoin d'éléments préparés
(On ne trouve pas de minerais brut en entrée
d'une usine automobile)
● Donne la cadence et synchronise
Ordonanceur
de taches
21
Pré requis : Scripter et automatiser
✔ Le build : maven, ant, grunt, …
✔ Les tests : Junit, *Unit, …
✔ L'environnement : mock, stubs, …
✔ La gestion de conf : git, svn, … et leur workflow
✔ Règles de codage
✔ Métriques d'analyse de code
22
Les concepts
✔ Les executors
✔ Les jobs
✔ Les workspace
✔ Les historiques
✔ Les vues
23
Jenkins : Les jobs
● Déclencheurs
– Horaire
– Surveillance repo
● Pre build
– Préparation de l'environnement
● “ Build ”
– Compilation
– Exécution de scripts
– Déployement dans l'environnement de test
– Exécution des tests
● Post build
– Génération de rapports
– Notification par mail
– Déploiement / mise à dispo sur l'environnement cible
24
Jenkins : Les jobs
SCM
Déclencheur
Tache principale
Post traitements
25
Jenkins : Les jobs
Evolution dans
le temps
Historique
Environnement
Séquence
26
Autres motivations
✔ Si on builde sous jenkins, on builde n'importe où
✔ Jenkins travaille H24 …pas nous
✔ Jenkins est connecté au repos de code …pas
nous
✔ Jenkins peut faire 100 fois la même tâche dans
la journée, sans broncher …pas nous
✔ Jenkins n'est pas interrompu par les collèguesJenkins n'est pas interrompu par les collègues
27
Quelques plugins
● Sonar : Qualité de code
● Maven : Build / Deploy / Release
● Tests : Lanceur de test, génération de rapports
● Throttle : Synchronisation / gestion des ressources
● BuildPipeLine : Représentation de graphes d'exécution
● Ush over ssh : exécution/déploiement over ssh
● Green balls : Le plus important !!!
28
Sonar
29
Sonar
30
cas concret :
La TV d'Orange
La genèse (août 2013)
• 25% du sprint AR à tester
• Tests longs et rébarbatifs
• 1 code / x STB => Non reg couteuse
• Frilosité sur les gros chantiers / changements de
code
• Echec des solutions dédiées
• Multitude de solutions généralistes
• Echec des solutions dédiées
• Multitude de solutions généralistes
Test
Status
Bref les tests c'était ça...
TEST1 sprint =
Qualité variable
en fonction du
testeur
Pénible
Beaucoup de
tests
DEV DEV DEV
• Impossible de tout tester
• Confiance médiocre
• Non regression coûteuse
• Réticence à faire des refactorings
Comment vous testiez ?
34
Mise en oeuvre de nos Jenkins
● Jenkins de build
– Compilation
– TU
– Analyse de la qualité de code
– Déploiement des SNAPSHOT/RELEASES
● JenkinsS de test
35
Mise en oeuvre de nos Jenkins
● Jenkins de build
● Jenkins S de test
– Compilation / déploiement des outils de test
– Compilation des Simulateurs/Stubs
– Récupération des builds depuis le jenkins build-TU
– Déploiement de l’environnement de test
– Déploiement du SOFT sur les boitiers STB
– Pilotage électrique des boitiers TV (reboot)
– Lancement des test suites : Reboot / Vérification de
l’environnement / Jeu d’une séquence / Vérifications
– Mise à jour des rapports
– Mise à jour de la campagne de test sous QC
Tests automatiques AR : Février 2015
Chaine complètement automatisée
buildbuild TUTU
Tests
Fonctionnels
Tests
Fonctionnels
RapportRapport
Tests
d’endurance
Tests
d’endurance
DeployDeploy
every night
Big picture
On demand
Code
Repo
update
TestSuitesdeploy
update
reset
selenium
Delivery
Status
Test
Repo
Questions ?

Contenu connexe

Tendances

Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
Jonathan Bonzy
 
Release quotidienne
Release quotidienneRelease quotidienne
Release quotidienne
Alexandre RODIERE
 
L'integration continue pour tous
L'integration continue pour tousL'integration continue pour tous
L'integration continue pour tous
Aurelien Navarre
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
Michael Akbaraly
 
Du Docker dans notre workflow de dev
Du Docker dans notre workflow de devDu Docker dans notre workflow de dev
Du Docker dans notre workflow de dev
Kodo Kojo
 
Commencer avec le tdd
Commencer avec le tddCommencer avec le tdd
Commencer avec le tdd
Eric Hogue
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
Arnaud Héritier
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924Gregory Boissinot
 
TDD for DevOps with Chef
TDD for DevOps with ChefTDD for DevOps with Chef
TDD for DevOps with Chef
Olivier BAZOUD
 
Industrialiser le contrat dans un projet PHP
Industrialiser le contrat dans un projet PHPIndustrialiser le contrat dans un projet PHP
Industrialiser le contrat dans un projet PHP
halleck45
 
Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010
JUG Lausanne
 
Confoo 2016: Initiation aux tests de charge
Confoo 2016: Initiation aux tests de chargeConfoo 2016: Initiation aux tests de charge
Confoo 2016: Initiation aux tests de charge
Henri Tremblay
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
Arnaud Héritier
 
JCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsJCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec Jenkins
Rossi Oddet
 
Futur tunis
Futur tunisFutur tunis
Futur tunis
Marc Hage Chahine
 
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
Geeks Anonymes
 
What's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsWhat's Next Replay - IC / Jenkins
What's Next Replay - IC / Jenkins
ZenikaOuest
 
PyConFR - testons en python
PyConFR - testons en pythonPyConFR - testons en python
PyConFR - testons en pythongburet
 

Tendances (20)

Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 
Release quotidienne
Release quotidienneRelease quotidienne
Release quotidienne
 
L'integration continue pour tous
L'integration continue pour tousL'integration continue pour tous
L'integration continue pour tous
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
 
Du Docker dans notre workflow de dev
Du Docker dans notre workflow de devDu Docker dans notre workflow de dev
Du Docker dans notre workflow de dev
 
Commencer avec le tdd
Commencer avec le tddCommencer avec le tdd
Commencer avec le tdd
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924
 
TDD for DevOps with Chef
TDD for DevOps with ChefTDD for DevOps with Chef
TDD for DevOps with Chef
 
Industrialiser le contrat dans un projet PHP
Industrialiser le contrat dans un projet PHPIndustrialiser le contrat dans un projet PHP
Industrialiser le contrat dans un projet PHP
 
Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010
 
JENKINS_BreizhJUG_20111003
JENKINS_BreizhJUG_20111003JENKINS_BreizhJUG_20111003
JENKINS_BreizhJUG_20111003
 
Confoo 2016: Initiation aux tests de charge
Confoo 2016: Initiation aux tests de chargeConfoo 2016: Initiation aux tests de charge
Confoo 2016: Initiation aux tests de charge
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
 
Perf university
Perf universityPerf university
Perf university
 
JCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsJCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec Jenkins
 
Futur tunis
Futur tunisFutur tunis
Futur tunis
 
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
 
What's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsWhat's Next Replay - IC / Jenkins
What's Next Replay - IC / Jenkins
 
PyConFR - testons en python
PyConFR - testons en pythonPyConFR - testons en python
PyConFR - testons en python
 

En vedette

RICP Final Presentation
RICP Final PresentationRICP Final Presentation
RICP Final Presentation
Nyasa Jackson
 
Industrias de Boyacá
Industrias de BoyacáIndustrias de Boyacá
Industrias de Boyacá
champi06
 
Paty
PatyPaty
Paty
lauryemi
 
Deriva - Algoritmo - Pseudocodigo
Deriva - Algoritmo - PseudocodigoDeriva - Algoritmo - Pseudocodigo
Deriva - Algoritmo - Pseudocodigo
Nicolás Carpena
 
Los videojuegos-helena-revertjessica-franco-y-marc3ada-garcc3ada
Los videojuegos-helena-revertjessica-franco-y-marc3ada-garcc3adaLos videojuegos-helena-revertjessica-franco-y-marc3ada-garcc3ada
Los videojuegos-helena-revertjessica-franco-y-marc3ada-garcc3ada
Alejandro Mogrovejo
 
Direito processual civil
Direito processual civilDireito processual civil
Direito processual civil
renigomes
 
Los paradigmas, las oleadas de desarrollo y los 5 paradigmas tecnoeconómicos.
Los paradigmas, las oleadas de desarrollo y los 5 paradigmas tecnoeconómicos.Los paradigmas, las oleadas de desarrollo y los 5 paradigmas tecnoeconómicos.
Los paradigmas, las oleadas de desarrollo y los 5 paradigmas tecnoeconómicos.
TherrySequera
 
Nr 01 disposições gerais
Nr 01   disposições geraisNr 01   disposições gerais
Nr 01 disposições gerais
flg79
 
...Medalla+de+bronce
...Medalla+de+bronce...Medalla+de+bronce
...Medalla+de+bronce
Nancy Yessica
 
Experiencia educativa en el colegio: programa DINO
Experiencia educativa en el colegio: programa DINOExperiencia educativa en el colegio: programa DINO
Experiencia educativa en el colegio: programa DINO
fengchuishaster
 
VICKY FINAL2
VICKY FINAL2VICKY FINAL2
VICKY FINAL2
Jane Chisom
 
Expo carnes y embutidos
Expo carnes y embutidosExpo carnes y embutidos
Expo carnes y embutidos
Miguel Daniel Ramirez del Castillo
 
PAE a un paciente con fractura
PAE a un paciente con fracturaPAE a un paciente con fractura
PAE a un paciente con fractura
Javiera Espinosa
 
Great Idea: Using COUNTER JR5 reports to evaluate usage of recent content
Great Idea: Using COUNTER JR5 reports to evaluate usage of recent contentGreat Idea: Using COUNTER JR5 reports to evaluate usage of recent content
Great Idea: Using COUNTER JR5 reports to evaluate usage of recent content
NASIG
 

En vedette (14)

RICP Final Presentation
RICP Final PresentationRICP Final Presentation
RICP Final Presentation
 
Industrias de Boyacá
Industrias de BoyacáIndustrias de Boyacá
Industrias de Boyacá
 
Paty
PatyPaty
Paty
 
Deriva - Algoritmo - Pseudocodigo
Deriva - Algoritmo - PseudocodigoDeriva - Algoritmo - Pseudocodigo
Deriva - Algoritmo - Pseudocodigo
 
Los videojuegos-helena-revertjessica-franco-y-marc3ada-garcc3ada
Los videojuegos-helena-revertjessica-franco-y-marc3ada-garcc3adaLos videojuegos-helena-revertjessica-franco-y-marc3ada-garcc3ada
Los videojuegos-helena-revertjessica-franco-y-marc3ada-garcc3ada
 
Direito processual civil
Direito processual civilDireito processual civil
Direito processual civil
 
Los paradigmas, las oleadas de desarrollo y los 5 paradigmas tecnoeconómicos.
Los paradigmas, las oleadas de desarrollo y los 5 paradigmas tecnoeconómicos.Los paradigmas, las oleadas de desarrollo y los 5 paradigmas tecnoeconómicos.
Los paradigmas, las oleadas de desarrollo y los 5 paradigmas tecnoeconómicos.
 
Nr 01 disposições gerais
Nr 01   disposições geraisNr 01   disposições gerais
Nr 01 disposições gerais
 
...Medalla+de+bronce
...Medalla+de+bronce...Medalla+de+bronce
...Medalla+de+bronce
 
Experiencia educativa en el colegio: programa DINO
Experiencia educativa en el colegio: programa DINOExperiencia educativa en el colegio: programa DINO
Experiencia educativa en el colegio: programa DINO
 
VICKY FINAL2
VICKY FINAL2VICKY FINAL2
VICKY FINAL2
 
Expo carnes y embutidos
Expo carnes y embutidosExpo carnes y embutidos
Expo carnes y embutidos
 
PAE a un paciente con fractura
PAE a un paciente con fracturaPAE a un paciente con fractura
PAE a un paciente con fractura
 
Great Idea: Using COUNTER JR5 reports to evaluate usage of recent content
Great Idea: Using COUNTER JR5 reports to evaluate usage of recent contentGreat Idea: Using COUNTER JR5 reports to evaluate usage of recent content
Great Idea: Using COUNTER JR5 reports to evaluate usage of recent content
 

Similaire à Integration continue - Introduction

Université de la performance
Université de la performanceUniversité de la performance
Université de la performance
pkernevez
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
Sylvain Leroy
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoring
neuros
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+
ekino
 
Formation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifFormation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratif
kemenaran
 
Développement en méthode agile
Développement en méthode agileDéveloppement en méthode agile
Développement en méthode agilelaurent bristiel
 
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileLes cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Denis Voituron
 
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
Agile Tour 2009 Québec
 
Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...
Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...
Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...
TelecomValley
 
Altran soirée du test logiciel - assez des c 05-10-17
Altran   soirée du test logiciel - assez des c 05-10-17Altran   soirée du test logiciel - assez des c 05-10-17
Altran soirée du test logiciel - assez des c 05-10-17
Marc Hage Chahine
 
Retour Experience Atchik Sigma T9 200903[1]
Retour Experience Atchik Sigma T9 200903[1]Retour Experience Atchik Sigma T9 200903[1]
Retour Experience Atchik Sigma T9 200903[1]almerys
 
Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes Agiles
Ippon
 
Développement d'un grand projet piloté par les tests (BDD)
Développement d'un grand projet piloté par les tests (BDD)Développement d'un grand projet piloté par les tests (BDD)
Développement d'un grand projet piloté par les tests (BDD)
Laurent PY
 
Techdays 2013 : ALM et eCommerce, des challenges en continu
Techdays 2013 : ALM et eCommerce, des challenges en continuTechdays 2013 : ALM et eCommerce, des challenges en continu
Techdays 2013 : ALM et eCommerce, des challenges en continu
vlabatut
 
The DevOps Wonder @ PHPTour Lyon 2014
The DevOps Wonder @ PHPTour Lyon 2014The DevOps Wonder @ PHPTour Lyon 2014
The DevOps Wonder @ PHPTour Lyon 2014
Matthieu de Canteloube
 
Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?
CGI Québec Formation
 
Performance ug#1
Performance ug#1Performance ug#1
Performance ug#1
Marc Bojoly
 
Realworld cd pipelines
Realworld cd pipelines Realworld cd pipelines
Realworld cd pipelines
TREEPTIK
 
[DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
[DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie[DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
[DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
Jean-Philippe Briend
 
[Codeur en seine] Les Pipelines Jenkins dans la vraie vie
[Codeur en seine] Les Pipelines Jenkins dans la vraie vie[Codeur en seine] Les Pipelines Jenkins dans la vraie vie
[Codeur en seine] Les Pipelines Jenkins dans la vraie vie
Jean-Philippe Briend
 

Similaire à Integration continue - Introduction (20)

Université de la performance
Université de la performanceUniversité de la performance
Université de la performance
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoring
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+
 
Formation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifFormation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratif
 
Développement en méthode agile
Développement en méthode agileDéveloppement en méthode agile
Développement en méthode agile
 
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileLes cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
 
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
 
Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...
Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...
Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...
 
Altran soirée du test logiciel - assez des c 05-10-17
Altran   soirée du test logiciel - assez des c 05-10-17Altran   soirée du test logiciel - assez des c 05-10-17
Altran soirée du test logiciel - assez des c 05-10-17
 
Retour Experience Atchik Sigma T9 200903[1]
Retour Experience Atchik Sigma T9 200903[1]Retour Experience Atchik Sigma T9 200903[1]
Retour Experience Atchik Sigma T9 200903[1]
 
Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes Agiles
 
Développement d'un grand projet piloté par les tests (BDD)
Développement d'un grand projet piloté par les tests (BDD)Développement d'un grand projet piloté par les tests (BDD)
Développement d'un grand projet piloté par les tests (BDD)
 
Techdays 2013 : ALM et eCommerce, des challenges en continu
Techdays 2013 : ALM et eCommerce, des challenges en continuTechdays 2013 : ALM et eCommerce, des challenges en continu
Techdays 2013 : ALM et eCommerce, des challenges en continu
 
The DevOps Wonder @ PHPTour Lyon 2014
The DevOps Wonder @ PHPTour Lyon 2014The DevOps Wonder @ PHPTour Lyon 2014
The DevOps Wonder @ PHPTour Lyon 2014
 
Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?
 
Performance ug#1
Performance ug#1Performance ug#1
Performance ug#1
 
Realworld cd pipelines
Realworld cd pipelines Realworld cd pipelines
Realworld cd pipelines
 
[DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
[DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie[DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
[DevFest Nantes 2016] Les Pipelines Jenkins dans la vraie vie
 
[Codeur en seine] Les Pipelines Jenkins dans la vraie vie
[Codeur en seine] Les Pipelines Jenkins dans la vraie vie[Codeur en seine] Les Pipelines Jenkins dans la vraie vie
[Codeur en seine] Les Pipelines Jenkins dans la vraie vie
 

Integration continue - Introduction

  • 1. Integration continueIntegration continue et autres distractionset autres distractions Olivier ETIENNE - OrangeOlivier ETIENNE - Orange
  • 2. 2 Plan ● Théorie – Le cycle de développement – Les contraintes actuelles – Les pratiques associées – … ● Jenkins au coeur de l'automatisation ● Exemple de mise en oeuvre
  • 3. 3 Contexte du développement logiciel ● Cycle en V ● Cycles courts / Iteration
  • 4. 4 Le cycle en V favorise l'effet tunnelLe cycle en V favorise l'effet tunnelLe cycle en V favorise l'effet tunnelLe cycle en V favorise l'effet tunnel
  • 5. 5 Contexte du développement logiciel ● Cycles courts / Iteration
  • 6. 6 Contexte du développement logiciel Cycles courts Cycles V
  • 7. 7 Contraintes du marché Deployer vite et souvent – Etsy : 25 / jour – Github : 25 /jour – Facebook : 2 / jour – Flickr : 10 / jour – Google : 2-3 / semaine
  • 8. 8 Et nous ? ● TTM ● Concurrence forte ● Etre les premiers à innover ● Besoin d'étaler la validation Nous avons presque les même attentes que les géants du WEB !
  • 9. 9 OK et donc... ... comment livrer plus vite jours en prod ??? ● Quelques pistes : – Changement d'état d'esprit : Cargo → Hors-bord – DEVOPS – Automatisation de la forge logicielle – Automatisation des tests
  • 10. 10 Changement d'état d'esprit Le hors-bord ✔ Rapide ✔ Faible capacité ✔ Courte distance couverte ✔ Manoeuvrable Le hors-bord soft ✔ Vite sur le marché ✔ Faible quantité / impact ✔ Rollback rapide ✔ Changements vite effectués Le hors-bord soft ✔ Vite sur le marché ✔ Faible quantité / impact ✔ Rollback rapide ✔ Changements vite effectués
  • 11. 11 DEVOPS plan code build test release deploy operate monitor
  • 14. 14 Le cycle de développement CodeCode CompileCompile Unit TestsUnit Tests Integ. TestsInteg. Tests Load TestsLoad Tests ReleaseRelease DeployDeploy CommitCommit TESTTEST DEVDEV DEPLOYDEPLOY
  • 15. 15 What if... CodeCode CompileCompile Unit TestsUnit Tests Integ. TestsInteg. Tests Load TestsLoad Tests ReleaseRelease DeployDeploy CommitCommit Equipe > 10 Multi site Eco système complèxe > 100 commit/j
  • 16. 16 What if... CodeCode CompileCompile Unit TestsUnit Tests Integ. TestsInteg. Tests Load TestsLoad Tests ReleaseRelease DeployDeploy CommitCommit 0,5j 10' 1h >12h
  • 17. 17 Mais aussi, pour être sûr CodeCode CompileCompile Unit TestsUnit Tests Integ. TestsInteg. Tests Load TestsLoad Tests ReleaseRelease DeployDeploy CommitCommit Règle de codage Audit de qualité Couverture de code Consommation de ressources
  • 20. 20 Qu'est-ce qu'une SW Factory ? ● Chaine d'assemblage d'une usine ● Besoin d'éléments préparés (On ne trouve pas de minerais brut en entrée d'une usine automobile) ● Donne la cadence et synchronise Ordonanceur de taches
  • 21. 21 Pré requis : Scripter et automatiser ✔ Le build : maven, ant, grunt, … ✔ Les tests : Junit, *Unit, … ✔ L'environnement : mock, stubs, … ✔ La gestion de conf : git, svn, … et leur workflow ✔ Règles de codage ✔ Métriques d'analyse de code
  • 22. 22 Les concepts ✔ Les executors ✔ Les jobs ✔ Les workspace ✔ Les historiques ✔ Les vues
  • 23. 23 Jenkins : Les jobs ● Déclencheurs – Horaire – Surveillance repo ● Pre build – Préparation de l'environnement ● “ Build ” – Compilation – Exécution de scripts – Déployement dans l'environnement de test – Exécution des tests ● Post build – Génération de rapports – Notification par mail – Déploiement / mise à dispo sur l'environnement cible
  • 24. 24 Jenkins : Les jobs SCM Déclencheur Tache principale Post traitements
  • 25. 25 Jenkins : Les jobs Evolution dans le temps Historique Environnement Séquence
  • 26. 26 Autres motivations ✔ Si on builde sous jenkins, on builde n'importe où ✔ Jenkins travaille H24 …pas nous ✔ Jenkins est connecté au repos de code …pas nous ✔ Jenkins peut faire 100 fois la même tâche dans la journée, sans broncher …pas nous ✔ Jenkins n'est pas interrompu par les collèguesJenkins n'est pas interrompu par les collègues
  • 27. 27 Quelques plugins ● Sonar : Qualité de code ● Maven : Build / Deploy / Release ● Tests : Lanceur de test, génération de rapports ● Throttle : Synchronisation / gestion des ressources ● BuildPipeLine : Représentation de graphes d'exécution ● Ush over ssh : exécution/déploiement over ssh ● Green balls : Le plus important !!!
  • 30. 30 cas concret : La TV d'Orange
  • 31. La genèse (août 2013) • 25% du sprint AR à tester • Tests longs et rébarbatifs • 1 code / x STB => Non reg couteuse • Frilosité sur les gros chantiers / changements de code • Echec des solutions dédiées • Multitude de solutions généralistes • Echec des solutions dédiées • Multitude de solutions généralistes
  • 32. Test Status Bref les tests c'était ça...
  • 33. TEST1 sprint = Qualité variable en fonction du testeur Pénible Beaucoup de tests DEV DEV DEV • Impossible de tout tester • Confiance médiocre • Non regression coûteuse • Réticence à faire des refactorings Comment vous testiez ?
  • 34. 34 Mise en oeuvre de nos Jenkins ● Jenkins de build – Compilation – TU – Analyse de la qualité de code – Déploiement des SNAPSHOT/RELEASES ● JenkinsS de test
  • 35. 35 Mise en oeuvre de nos Jenkins ● Jenkins de build ● Jenkins S de test – Compilation / déploiement des outils de test – Compilation des Simulateurs/Stubs – Récupération des builds depuis le jenkins build-TU – Déploiement de l’environnement de test – Déploiement du SOFT sur les boitiers STB – Pilotage électrique des boitiers TV (reboot) – Lancement des test suites : Reboot / Vérification de l’environnement / Jeu d’une séquence / Vérifications – Mise à jour des rapports – Mise à jour de la campagne de test sous QC
  • 36. Tests automatiques AR : Février 2015 Chaine complètement automatisée buildbuild TUTU Tests Fonctionnels Tests Fonctionnels RapportRapport Tests d’endurance Tests d’endurance DeployDeploy
  • 37. every night Big picture On demand Code Repo update TestSuitesdeploy update reset selenium Delivery Status Test Repo

Notes de l'éditeur

  1. Avantages et inconvénients du cycle en V Durée Effet Tunnel Cout des détection tardives de defects
  2. Effet Tunnel = Trop de temps avant de voir un feature
  3. Changements des méthodes agiles et iteratives Cycles courts Livraisons régulières Beaucoup de communication / interactions avec le client
  4. On traverse le pacifique Ou bien on relie deux îles
  5. Déployer toujours plus vite pour garder ses clients Etre le premier à amener l'innovation
  6. jkhqsjkdhqs
  7. One year ago, to test a TV App, we used to do like any TV user. Okay, we didn’t have beer or cheetos… Not every day at least… So, we take the product specification and test plans, and for each new functionality we have to run the tests and note the result in a report. We also have to do that on for functionality that we MAY have been impacted (non regression tests) We do that in order to give a status for each release in order to pass to the next phase of our process => QA team with END2END TESTS
  8. In our development teams, these tests are passed during one full week for each sprint. The rythme was 3 week of coding+Unit Testing / One week of functional tests Because of our context and fragmentation, we were unable to run all tests on all configuration within a week So, every change was very expensive to test and all refactoring activities were really risky. NO REFACTORING WAS A BIG PROBLEM ON LEGACY CODE And also, these activities of manual testing were really boring ! A lot of developer’s time spent in test https://www.flickr.com/photos/robnwatkins/
  9. Now, the big picture of what we have now is : Moved from continuous compilation to continuous integration and test Update the test campaign status