Normandy JUG integration Continue

Preview:

DESCRIPTION

 

Citation preview

L'Intégration Continue dans l'univers Java

Juin 2009

Dimitri BaeliLaurent Deséchalliers

Introduction

The Joel Testby Joel On Software

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

L'intégration 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

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 !

2. Les besoins d'intégration

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

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é

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

3. Un build de qualité

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

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

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

4. Mise en oeuvre

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

5. Retours d'expérience

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 »

SVNHistorique sources

Maven2Build sourceGestion (versionnée) des dépendances

ContinuumBuild AutomatiqueTest unitaire

ArtiFactoryRepository Maven2

SonarQualité code

5. Retour d'expérience : PME

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

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

6. Les outils du moment

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

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é

7. Pour aller plus loin

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

7. Pour aller plus loin

Hortis Sonar