intégration continue

47
© Klee Group Projet SIGC Atelier de cadrage : Référentiel & Paramétrage 1 / 23 1 Prez Flash :: Intégration continue Olivier BOITEL

Upload: klee-group

Post on 22-Dec-2014

3.838 views

Category:

Technology


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Intégration continue

© Klee Group Projet SIGC Atelier de cadrage : Référentiel & Paramétrage 1 / 2311

Prez Flash :: Intégration continue

Olivier BOITEL

Page 2: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 2 / 47

Agenda

Principes et enjeux

L’intégration continue

Les outils disponibles

Intégration continue à KLEE

Questions / Réponses

Page 3: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 3 / 47

Introduction

DéfinitionL'intégration continue est un ensemble de pratiques utilisées en génie logiciel. Elles consistent à intégrer fréquemment le travail des membres d’une équipe ou de plusieurs équipes. Chaque intégration est exécutée par un processus automatique (incluant les tests) et permet de détecter les erreurs d’intégration au plus tôt.

Enjeux La productivité

La qualité logicielle

La réactivité

L’autonomie

La standardisation des règles de développement

Détection des erreurs au plus tôt

La testabilité et la non régression

Page 4: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 4 / 47

Qualité logicielle ?

Elle est évoquée pendant toute la durée de vie d’un projet PAQ

Responsable qualité

Qualité technique des développements

Des principes existent depuis très longtemps Conception et ergonomie

Développements pilotés par les tests

Souvent négligée au profit de la supposée rentabilité du projet

Qui ? Ceux qui conçoivent et programment le logiciel

Page 5: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 5 / 47

Qualité logicielle / Acteurs

Différentes visions de la qualité logicielle Utilisateur final : fonctionnel, ergonomie, fiabilité

Développeur : rapidité de développement, conception, lisibilité du code …

Exploitant : facilité d’installation et de déploiement

Architecte : interopérabilité, portabilité, qualité technique …

Page 6: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 6 / 47

Qualité logicielle / Caractéristiques

Caractéristiques définies par une norme ISO ISO 9126 Software Quality Model

http://www.sqa.net/iso9126.html

6 caractéristiques Capacité fonctionnelle

Fiabilité

Facilité d’utilisation, homogénéité

Maintenabilité

Rendement / scalabilité

Portabilité

Page 7: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 7 / 47

Coût de la non qualité : Dette technique

Deux facteurs de coût sur les projets Bugs Fiablilité

capacité à faire évoluer le SI Maintenabilité

2 Exemples de non qualité Bug sur le calcul des arrondis du nombre de trimestres cotisés pour l’assurance vieillesse

= un trimestre de trop pour près de 8 millions de salariés (perte de 2,5 milliards d’euros)

Crash de la sonde Mars Climate Orbiter après plusieurs mois de voyages (système métrique international pour le logiciel Vs système métrique impérial pour les capteurs)

La non qualité consomme une charge conséquente sur les projets Montée en compétence

Corrections, Itérations

Conflit, réunions

Dette techniqueDette technique

Page 8: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 8 / 47

La qualité, à quel prix ?

Optimisation des coûts qualité

Evaluer le niveau de qualité en fonction du contexte Système de pilotage automatique d’une navette spatiale

Application de gestion de demande de logement sociaux≠

Page 9: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 9 / 47

Solutions qualité

Programmation orientée objet Un rôle et une responsabilité distincte

Abstraction des éléments stables

Conception par contrat

Principe Open / Close

Tests

Gestion des sources

Standardisation des règles de développement

Industrialisation des développements

Page 10: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 10 / 47

Agenda

Principes et enjeux

L’intégration continue

Les outils disponibles

Intégration continue à KLEE

Questions / Réponses

Page 11: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 11 / 47

Historique

Principe tiré de l’eXtreme Programming inventé par Kent Beck, Ward Cunningham et Ron Jeffries

Calcul des rémunérations chez Chrysler, Mars 1996

Octobre 1999 avec le livre « Extreme Programming Explained » de Kent Beck.

puisque la revue de code est une bonne pratique, elle sera faite en permanence (par un binôme) ;

puisque les tests sont utiles, ils seront faits systématiquement avant chaque implantation

Formalisation par Martin Fowler et Kent Beck, 2000

Page 12: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 12 / 47

La démarche

Problématique Comment écrire du code de qualité ?

Comment mesurer la qualité ?

Comment identifier les actions d’amélioration ?

Comment valider ces actions

Comment itérer sur ce processus de qualité ?

Phase d’intégration d’un projet longue et couteuse

Détection tardive des bugs

Eviter le syndrome du « Je ne comprends pas, ça marche sur mon poste.» Commits partiels

Fichiers de configuration dépendant du poste de travail

Page 13: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 13 / 47

Principes (1/3)

Principes agiles Fabriquer souvent (« build »)

Tester souvent

Tester les performances souvent

Intégrer souvent dans le SI

Faire l’intégration de l’application dans son ensemble, code source et ressources continuellement

Détecter les problèmes au fil du temps

Corriger au plus tôt

Automatiser le processus d’intégration

Page 14: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 14 / 47

Principes (2/3)

Avant la mise en place de l’intégration continue

Page 15: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 15 / 47

Principes (3/3)

Après la mise en place de l’intégration continue

Page 16: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 16 / 47

La chaine d’intégration continue (1/2)

Gérer les sources du projet Mettre régulièrement ses sources à jour

Mettre à jour ses sources avant commit

Commit au moins une fois par jour

Ajouter des commentaires lisibles au commit

Tagger les versions à chaque livraison

Build un projet à chaque changement

« Build » ? Compiler

Inspecter (revue de code)

Tester

Déployer

Notifier (email, rapport)

Page 17: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 17 / 47

La chaine d’intégration continue (2/2)

Page 18: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 18 / 47

Les différents type de « build »

Page 19: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 19 / 47

Processus d’intégration continue (1/3)

Automatiser le processus complet en tenant compte des aspects distribués Plateforme de développement

Plateforme d’intégration

Plateforme d’acceptation

Page 20: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 20 / 47

Processus d’intégration continue (2/3)

Plateforme de développement « Local build » : construction de l’application sur le poste de travail

Compilation des sources, exécution des tests, inspection de code …

Si possible utilisation des mêmes commandes de build que la plateforme d’IC

« commit at all time» : à tout moment les développeurs peuvent mettre à jour le référentiel de sources

Référentiel de sources Ensemble des éléments d’un projet

Le code doit être compilable

Les tests doivent être exécutés avec succès

Stratégie de commit Ensemble fonctionnel cohérent, Pas de commits « haute fréquence »

Des commits maîtrisés (hook, passage des outils locaux)

Page 21: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 21 / 47

Processus d’intégration continue (2/3)

Plateforme d’intégration : build automatisé Construction automatique de l’application régulièrement

Lancement des tests, calcul de couverture de tests

Calcul d’indicateurs (complexité etc…)

Production de rapport (tests, qualité …) : page de statuts, envoi par mail

Déploiement d’une version régulièrement Par exemple toutes les semaines

Objectif : permettre de faire des tests fonctionnels, tests de performance

Visibilité pour le chef de projet des avancements

Eventuellement packager une livraison finale

Page 22: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 22 / 47

Les bonnes pratiques

Commiter le code régulièrement

Commiter du code bon

Résoudre les builds ratés rapidement

Tous les tests et les rapports d’inspection doivent passer

Lancer des builds sur le poste de travail

Garder les builds dans le vert tout au long de la journée

Eviter de récupérer du mauvais code

Page 23: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 23 / 47

Agenda

Principes et enjeux

L’intégration continue

Les outils disponibles

Intégration continue à KLEE

Questions / Réponses

Page 24: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 24 / 47

Maven

Gestion des dépendances pom.xml

Gestion de la compilation, du packaging

Gestion des rapports

Gestion des livraisons des différents livrables

Page 25: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 25 / 47

Deploiement Maven

Exemple de repository Maven SonaType / Nexus

Page 26: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 26 / 47

Les tests unitaires

Fiabilité et maintenabilité

Conception : les tests sont écrits avant la méthode testée

Assurent la non régression du produit

Les outils : JUNIT ou NUNIT

Exemple : couverture de code avec Cobertura

Page 27: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 27 / 47

Les tests de performance

Tester la montée en charge d’une application

Information présente dans le CCTP

JMETER

Page 28: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 28 / 47

Outil de qualimétrie : Sonar (1/2)

Se base sur les normes ISO : donne une vue d’ensemble d’une application

Outil Open source orienté décideur

Se base sur MAVEN 3

Exemple : le dashboard pour un projet- Nombre de lignes / de packages / de classes / de méthode : indications du volume du code source.

- Complexité : indice de complexité cyclomatique par méthode et par classe.

Page 29: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 29 / 47

Outil de qualimétrie : Sonar (2/2)

Représentation graphique des indicateurs

Vision temporelle de l’évolution d’un projet

Page 30: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 30 / 47

Une PIC : Jenkins (1/3)

La météo du projet

Interface graphique évoluée

Tout est plugin

Page 31: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 31 / 47

Une PIC : Jenkins (2/3)

Configuration simple d’un projet

Page 32: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 32 / 47

Une PIC : Jenkins (3/3)

Un nombre important de plugins

Page 33: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 33 / 47

Revue de code

Destinataire : les développeurs

Les outils java Checkstyle

Findbugs : detecte un ensemble de bugs référencés

PMD/CPD : détection copier/coller, code mort …

Compilateur eclipse : warning et erreurs fournies par l’IDE

Installation des pluggins eclipse sur les postes de travail

Les outils .NET Fxcop

Stylecop

CSC

CPD

PHP PHPCheckstyle

Page 34: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 34 / 47

Agenda

Principes et enjeux

L’intégration continue

Les outils disponibles

Intégration continue à KLEE

Questions / Réponses

Page 35: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 35 / 47

Objectifs

Dette technique Il vaut mieux rembourser la dette un jour plus tôt que de continuer à payer sans cesse des intérêts

Vision technique et classifiée des différents projets

Uniformiser les règles et les outils de développement

Traiter tous les types de projets (Java, JCMS, .NET, PHP)

Former une nouvelle génération d’architectes techniques

Page 36: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 36 / 47

Gestionnaires de source (1/3)

CVS : par Dick Grune en 1986, puis de nombreux contributeurs

SVN : Subversion lancé en février 2000 ajoutant principalement Les transactions lors des commit Renommage et le déplacement de fichiers (suivant le support des clients svn ) Aucune distinction entre un label, une branche et un répertoire Numéros de révision sont désormais globaux WebDav (répertoire distant avec Commit automatique)

TFS : Team Foundation Server by Microsoft Plateforme d’intégration continue comprenant un gestionnaire de sources

Page 37: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 37 / 47

Choix Klee

CruiseControl : projet open source introduit par Martin Fowler Un ordonnanceur

Un format XML pour les résultats

Support de ANT

Page de statuts simple

Résultats d ’exécution par outil

KLEE : ajouter des fonctionnalité plus proche de l’opérationnel Page de statuts : indicateurs de l’état du projet

Répartition des erreurs par axes opérationnels

Intégration des outils pour toutes les plateformes

Page 38: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 38 / 47

La pages des statuts

Identifier rapidement l’état du projet

Code couleur simple : feux de signalisation

Écran d’accueil de CruiseControl optimisé par KLEE afin de proposer un tableau de bord opérationnel aux développeurs et aux chefs de projets

Page 39: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 39 / 47

Un script de build (1/2)

Un script par projet En java : tâche ANT (générée par Maven 3)

En .NET : tâche NANT

Page 40: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 40 / 47

Un script de build (2/2)

Un script de compilation général + un script cruisecontrol de passage des outils

Tous les modules d’une application doivent être audités

Un outils = rembourse une partie de la dette Exemple : audit des packages SSIS avec DTEXEC

Page 41: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 41 / 47

Un Fichier de configuration

Un fichier de configuration général : config.xml

Page 42: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 42 / 47

Revue de code

Destinataire : les développeurs

Les outils java Checkstyle

Findbugs : detecte un ensemble de bugs référencés

PMD/CPD : détection copier/coller, code mort …

Compilateur eclipse : warning et erreurs fournies par l’IDE

Installation des pluggins eclipse sur les postes de travail

Les outils .NET Fxcop

Stylecop

CSC

CPD

PHP PHPCheckstyle

Page 43: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 43 / 47

Le dispatch

Répartition des erreurs en 6 catégories opérationnelles (vs iso) Bug : plantage éventuel

DeadCode : code non utilisé

Perf : performances pouvant être améliorées

FatCode : code « sale » (copier/coller …)

Doc : code non documenté

CodeStyle : style du code non conventionnel

Page 44: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 44 / 47

Rapport aux développeur

Un mail personnalisé est envoyé aux développeurs

Corriger efficacement les erreurs du dernier build

Page 45: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 45 / 47

Perspectives

Paralléliser les Builds

Générer des rapports Aux développeur et CP

Rapports intégrés aux livraisons

Intégrer des processus de tests supplémentaires (tests de surfaces …)

Fonctionnement en cluster

VM CC1 VM CC2 VM CC3 VM CC4

Tableau de bord

Page 46: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 46 / 47

Agenda

Principes et enjeux

L’intégration continue

Les outils disponibles

Intégration continue à KLEE

Questions / Réponses

Page 47: Intégration continue

© Klee Group Prez Flash Intégration continue Olivier BOITEL 47 / 47

Questions ?

Retrouvez nous sur le blog technique de Klee

http://blog.kleegroup.com/teknics

[email protected]@teKnics_Klee