Intégration continue

Post on 22-Dec-2014

3.828 views 2 download

description

 

Transcript of Intégration continue

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

Prez Flash :: Intégration continue

Olivier BOITEL

© 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

© 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

© 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

© 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 …

© 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é

© 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

© 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≠

© 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

© 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

© 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

© 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

© 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

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

Principes (2/3)

Avant la mise en place de l’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

© 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)

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

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

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

Les différents type de « build »

© 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

© 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)

© 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

© 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

© 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

© 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

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

Deploiement Maven

Exemple de repository Maven SonaType / Nexus

© 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

© 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

© 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.

© 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

© 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

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

Une PIC : Jenkins (2/3)

Configuration simple d’un projet

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

Une PIC : Jenkins (3/3)

Un nombre important de plugins

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

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

Un Fichier de configuration

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

© 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

© 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

© 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

© 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

© 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

© 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

teKnics@kleegroup.com@teKnics_Klee