Vous êtes sur la page 1sur 24

Lintgration continue

Continuous Integration
Presented by Wael ANIBA - UP JEE @ESPRIT - 2013/2014 - wael.aniba@esprit.tn

Problmatique?

Cest Quoi?

"L'intgration continue est un ensemble de pratiques utilises en gnie logiciel. Elles consistent vrifier chaque modification de code source que le rsultat des modifications ne produit pas de rgression de l'application en cours de dveloppement."
Wikipedia

"Une pratique considrant diffremment l'intgration, habituellement connue comme pnible et peu frquente, pour en faire une tche simple faisant partie intgrante de l'activit quotidienne d'un dveloppeur."
Documentation CruiseControl.NET

XP:Principes

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

puisque les tests sont utiles, ils seront faits systmatiquement avant chaque mise en uvre ; puisque la conception est importante, elle sera faite tout au long du projet (refactoring) ; puisque la simplicit permet d'avancer plus vite, nous choisirons toujours la solution la plus

simple ;

puisque la comprhension est importante, nous dfinirons et ferons voluer ensemble des mtaphores ;

puisque l'intgration des modifications est cruciale, nous l'effectuerons plusieurs fois par jour ;

puisque les besoins voluent vite, nous ferons des cycles de dveloppement trs rapides pour nous adapter au changement.

SCM
Source control managemet

Changes
CHECK OUT

CHECK IN

BRANCH
BRANCHING MERGE

To release

Repo
CHECK OUT

Main Line / TRUNK


CHECK IN (Commit)

UPDATE Changes

Changes
Code/build/tests

SCM Source control managemet


Mercurial / Git Repo CVS/SVN

Repo

Repo

Repo

Local workspace

Local workspace

Local workspace

Local workspace

Les Tests?

Les tests de type white box

Les tests unitaires Les tests dintgration Les tests de performance Les tests de qualit

Les Tests?

Les tests de type black box

Les tests fonctionnels Les tests de monte en charge Les tests de non-rgression

Intgration

The Integration Hell !

Intgration

Big bang integration

Intgration

Frequent integration

Intgration continue

Martin Fowler:
team integrate their work frequently, leading to multiple integrations per day. this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly. Continuous integration involves integrating early and often, so as to avoid the pitfalls of "integration hell". The practice aims to reduce rework and thus reduce cost and time.

Comment cela fonctionne?

Une

pratique agile (XP) Mentalit+outils

schma de dveloppement classique :


Spcifications Dveloppem ent Intgration

schma de dveloppement Intgration continue :


Spcifications Dveloppement Intgration

Pratiques

maintenir un dpt unique de code source versionn ; automatiser les compilations ; rendre les compilations auto-testantes ; tout le monde commit tous les jours ; tout commit doit compiler le tronc (trunk) sur une machine d'intgration ; maintenir une compilation courte ; tester dans un environnement de production clon ; rendre disponible facilement le dernier excutable ; tout le monde doit voir ce qui se passe ; automatiser le dploiement.

14

Pratiques
Architecture dun logiciel dintgration

Gestionnaire de Build

Gestionnaire de tests

Gestionnaire de SCM

Gestionnaire de notifications

Outils de build

Ant

NAnt
Maven

Make
Phing

Rake

Outils de CI

CruiseControl CruiseControl.NET CruiseControl.rb JetBrains TeamCity Apache Hudson Apache Continuum Atlassian Bamboo FinalBuilder phpUnderControl XInc

Outils de tests unitaires

Junit NUnit CppUnit

PHPUnit
SimpleTest

JSUnit
J3Unit

Outils dinspection couverture des tests

Cobertura Atlassian

Clover

jTest
JCoverage CodeCover

EMMA
Parasoft Ncover

Insure++

Xdebug
Coverage.py

Sonar

Cas dutilisation
Le dveloppeur soumet une modification
4 Build + Tests
$ Gcc c *.c o test Compiling Compilation Sucessfull Testing Junit tests OK Integration tests OK Performance tests OK Code Inspection 86% Deploying in test environnement OK

5 Dploiement

Serveur de test

6 Notification

Serveur dintgration
3 Update 2

Serveur de recette

Vrification des modifs

Postes de dev

1 Commit

Serveur de production

SCM

Reporting

Code coverage analysis Static analysis (syntax check, code dependencies) Copy/paste detectors

Avantages
le

test immdiat des units modifies ; la prvention rapide en cas de code incompatible ou manquant ; les problmes d'intgration sont dtects et rpars de faon continue, vitant les problmes de dernire minute ; une version est toujours disponible pour un test, une dmonstration ou une distribution.