27
L'Intégration Continue dans l'univers Java Juin 2009 Dimitri Baeli Laurent Deséchalliers

Normandy JUG integration Continue

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Normandy JUG integration Continue

L'Intégration Continue dans l'univers Java

Juin 2009

Dimitri BaeliLaurent Deséchalliers

Page 2: Normandy JUG integration Continue

Introduction

The Joel Testby Joel On Software

Page 3: Normandy JUG integration Continue

1- Utilisez vous un gestionnaire de sources ?

2- Pouvez-vous faire un build en une seule étape ? ?

3- Avez-vous des Builds journaliers ?

4- Avez-vous un gestionnaire de Bugs ?

5- Corrigez-vous les bugs avant d'écrire du code ?

6- Votre planning est-il à jour ?

7- Avez-vous des spécifications ?

8- Vos développeurs travaillent-ils au calme ?

9- Avez-vous les meilleurs outils permis par votre budget ?

10- Avez-vous des tests / testeurs ?

11- Les candidats écrivent-ils du code ?

12- Testez-vous l'utilisabilité avec vos collègues ?

The Joel Test

Page 4: Normandy JUG integration Continue

L'intégration Continue

Page 5: Normandy JUG integration Continue

1. Que celui qui n'a jamais ...2. Les besoins d'intégration3. Un build de qualité4. Mise en Oeuvre5. Les outils6. Retours d'expérience7. Pour aller plus loin

Intégration Continue

Page 6: Normandy JUG integration Continue

1. Que celui qui n'a jamais ...

Commité sans vérification

Fait de commit partiel

Commité du code qui compile mais ne marche pas

Fait de régressions inadmissibles

Fait des changements d'API

Fait un commit tardif impactant

… en a déjà été victime !

Page 7: Normandy JUG integration Continue

2. Les besoins d'intégration

Page 8: Normandy JUG integration Continue

2. Les besoins d'intégration

Garantir la qualité des livrablesEn toute indépendanceDe façon reproductibleSur tous les environnements

Alertes / RésultatsJuste celles qu'il fautConsultables et compréhensiblesRapides

Page 9: Normandy JUG integration Continue

2. Les besoins d'intégration

L'automatisation !!Minimiser les étapes manuellesProfiter de la puissance des machinesParalléliser les environnementsMultiplier les chances de trouver des problèmesMonitoring qualité et traçabilité

Page 10: Normandy JUG integration Continue

2. Les besoins d'intégration

Règles d'équipeCommit fréquentCommit atomiqueRégler les problèmes sur le champEcrire des tests déterminants

Se concentrer sur l'essentielLa fabricationRéagir aux résultat de l'intégration

Page 11: Normandy JUG integration Continue

3. Un build de qualité

Page 12: Normandy JUG integration Continue

3. Un build de qualité : Le Processus

Compilation

Tests unitaires

Analyse Qualité du code

Tests de Déploiement / Smoke Tests

Tests d'intégration

Génération de la Documentation

Packaging

Publication

Page 13: Normandy JUG integration Continue

3. Un build de qualité : L'automatisation

AutomatisationDoit pouvoir être joué en localExécuté sur un serveur isolé et dédiéAussi souvent que possibleA la demande

Attention !!Le build doit être rapideLe build ne doit pas échouer à tordLes notifications doivent être pertinentesNe pas déclencher trop vite un build

Page 14: Normandy JUG integration Continue

3. Un build de qualité

Les facteurs de qualitéTests rapides et couvrantsCode propre (format, warnings)IDE Correctement configurésAnalyse du code (findbug, pmd, …)Historique des builds par version/révisions et informations complémentaires

Page 15: Normandy JUG integration Continue

4. Mise en oeuvre

Page 16: Normandy JUG integration Continue

4. Mise en oeuvre : Les étapes

1. Gestionnaire de sourcesRéférenceGestion des contributions (Commit)Résolution des conflits

2. Script de buildMaven, Ant/Ivy, Gradle, Gant, Easyant, ...

3. Ecriture de tests automatiques4. Plannification des builds5. Analyses de code, reporting5. Publier les résultats

Page 17: Normandy JUG integration Continue

5. Retours d'expérience

Page 18: Normandy JUG integration Continue

5. Retour d'expérience : PME

Exemple concretÉquipe de 4 développeurs/euses1 PC a 300€Logiciels open-source

Svn / Maven2 / ArtiFactoryContinuumSonar

L'IC est souvent la « dernière roue du carrosse »

Pourtant un facteur de productivité et qualitéVision non « court termiste »

Page 19: Normandy JUG integration Continue

SVNHistorique sources

Maven2Build sourceGestion (versionnée) des dépendances

ContinuumBuild AutomatiqueTest unitaire

ArtiFactoryRepository Maven2

SonarQualité code

5. Retour d'expérience : PME

Page 20: Normandy JUG integration Continue

Ressources :Installer le serveur

Compétences Linux

Installer les applicatifs

Compétences Java/Linux

Paramétrer les applicatifs

Affiner les réflexions

Coût 300€ (pc tour)5 jours travail

5. Retour d'expérience : PME

Page 21: Normandy JUG integration Continue

5. Retours d'expérience : Build eXo

16 Projets :+1-4 branches par projets80 développeurs sur 4 paysScrumDépendances entre les projets3 AppServs, 2 OS, 3DB : 18 configurationsSvn, Hudson, Maven2, Emma, Jira, EclipseTous les serveurs sur Amazon EC2 !

A venir:Sonar sous peu …Site de centralisation des binaires et résultats

Page 22: Normandy JUG integration Continue

6. Les outils du moment

Page 23: Normandy JUG integration Continue

6. Les outils du moment

IntelliJ TeamCityIntégration Eclipse/Idea top !Build distant, Pre-Commit depuis l'IDEBuild distribuéSuivi des responsabilitéshttp://teamcity.jetbrains.com/overview.html

HudsonOpen sourceBuild distribuéBeaucoup de plugins (emma, violations, ...) http://hudson.jboss.org/hudson

Page 24: Normandy JUG integration Continue

6. Les outils du moment

Atlassian BambooBuild distribuésAnalysis du code, StatisitquesCollaboration, Telemetriehttp://opensource.bamboo.atlassian.com/

ThoughtWork CruiseIssue de CruiseControlGestion du cycle de release !Build distribué

Page 25: Normandy JUG integration Continue

7. Pour aller plus loin

Page 26: Normandy JUG integration Continue

7. Pour aller plus loin

Sonar by SonarSourcesOpen Source, initié par HortisCollecte des rapports de buildAnalyse du codeTime MachineSuggestion d'action

http://nemo.sonar.codehaus.org

Page 27: Normandy JUG integration Continue

7. Pour aller plus loin

Hortis Sonar