Intégration continue transco

1 594 vues

Publié le

Publié dans : Business, Technologie
  • Soyez le premier à commenter

Intégration continue transco

  1. 1. Principes et outils d'intégration continue Medias Transcontinental Février 2011
  2. 2. Objectifs de la présentation <ul><li>Sensibiliser les participants aux principes, pratiques et outils utilisées par l'équipe technique de réalisation (concepteurs et développeurs) </li></ul><ul><ul><li>L'intégration continue </li></ul></ul><ul><li>Concepteurs, développeurs, intégrateurs </li></ul><ul><ul><li>Premiers utilisateurs </li></ul></ul><ul><ul><li>Impact sur leur pratique </li></ul></ul><ul><li>Analystes et gestionnaires </li></ul><ul><ul><li>Mieux comprendre le métier des développeurs </li></ul></ul><ul><ul><li>Apprécier comment les outils peuvent servir à assurer un suivi de l'évolution du travail de l'équipe </li></ul></ul><ul><li>Rapprocher les différents métiers </li></ul>
  3. 3. L’intégration continue (IC) <ul><li>«  Un changement de paradigme qui affecte notre façon d’envisager le développement et la livraison de composantes logicielles » </li></ul>
  4. 4. Définition (in English) <ul><li>Continuous Integration is a software development practice where members of a team integrate their work frequently . Each integration is verified by an automated build (including tests) to detect integration errors as quickly as possible. (…) this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly . </li></ul><ul><li>-- Martin Fowler </li></ul>
  5. 5. Les principaux outils d’IC chez Transcontinental Médias <ul><li>Eclipse </li></ul><ul><ul><li>IDE </li></ul></ul><ul><li>SVN </li></ul><ul><ul><li>Gestionnaire de sources </li></ul></ul><ul><li>Maven </li></ul><ul><ul><li>Outil de build </li></ul></ul><ul><li>Nexus </li></ul><ul><ul><li>Gestionnaire de dépôts d’artéfacts </li></ul></ul><ul><li>Hudson </li></ul><ul><ul><li>Gestionnaire de builds automatisés </li></ul></ul><ul><li>Sonar </li></ul><ul><ul><li>Analyseur de qualité du code </li></ul></ul>
  6. 6. Si une image vaut mille mots… <ul><li>… alors une animation vaut … </li></ul>
  7. 7. Une journée d’intégration continue
  8. 8. L'environnement d'IC chez Transcontinental Medias
  9. 9. Maven: Outil de build et de gestion des dépendances
  10. 10. Nexus: Gestionnaire de dépôts d’artéfacts
  11. 11. Hudson: Gestionnaire de builds automatisés
  12. 12. Sonar: Service d'analyse de la qualité et de la conformité du code
  13. 13. Mise en garde p/r Hudson et Sonar <ul><li>Ne doivent pas être utilisés comme outils de surveillance et de répression </li></ul><ul><li>Ce sont des outils qui doivent servir </li></ul><ul><ul><li>A améliorer la qualité du travail de l'équipe de concepteurs/développeurs </li></ul></ul><ul><ul><li>A faciliter le travail des gestionnaires (suivi de l'avancement des travaux) </li></ul></ul><ul><li>Les objectifs et les métriques de qualité doivent être ceux de l'équipe au grand complet, pas seulement des concepteurs et développeurs </li></ul><ul><ul><li>Responsabilité collective </li></ul></ul>
  14. 14. Eclipse: IDE Un seul projet Eclipse! Dépendances sur de nombreux jars internes et de tierces parties Aucune anomalie de compilation
  15. 15. Les pratiques importantes de l’IC Pratique Description Promouvoir le code fréquemment Effectuer des promotions de code au moins une fois par jour. Ne jamais promouvoir du code brisé Ne jamais faire la promotion de code ne compilant pas ou échouant un test. Réparer immédiatement le code brisé Même si la responsabilité est collective, le développeur qui a fait la dernière promotion doit s’impliquer dans la correction du code. Écrire des tests automatisés S’assurer que le logiciel fonctionne en utilisant des tests automatisés. Exécuter ces tests avec les builds automatisés. Tous les tests et inspections doivent passer Pas 90%, pas 95% mais tous (100%) les tests doivent passer avant de promouvoir du code modifié. Exécuter des builds privés Pour éviter des échecs d’intégration, effectuer un merge avec les changements des autres développeurs et exécuter un build d’intégration local (build privé). Éviter de récupérer du code brisé Si le build est en échec, vous perdrez du temps si vous récupérez le code de la voûte centrale. Attendez que la correction soit complétée ou participez à l’effort de correction avant de récupérer le code le plus récent.
  16. 16. Principes de base de l’IC <ul><ul><li>Toutes les dépendances sont gérées avec Maven </li></ul></ul><ul><ul><li>Toute promotion de code dans SVN déclenche un build par Hudson qui dépose les artéfacts résultants dans Nexus </li></ul></ul><ul><ul><li>Les binaires sont tous dans Nexus, jamais dans SVN </li></ul></ul><ul><ul><li>Les dépendances sont sur les artéfacts pas sur les projets Eclipse </li></ul></ul><ul><ul><li>Tous les acteurs (développeurs, intégrateurs, gestionnaires de config, sysadmina etc.) doivent d’abord utiliser ce qui se trouve dans le dépôt Nexus, pas les sources qui se trouvent dans SVN </li></ul></ul>
  17. 17. Avantages liés aux pratiques d’IC <ul><ul><li>Environnement de développement (Eclipse) simplifié, allégé et plus réactif </li></ul></ul><ul><ul><ul><li>Moins de projets dans l’IDE </li></ul></ul></ul><ul><ul><ul><li>Moins de temps à monter des « espaces de travail » </li></ul></ul></ul><ul><ul><ul><li>Moins de risques d’être affecté par les changements des autres </li></ul></ul></ul><ul><ul><ul><li>Gestion automatisée des dépendances, des sources et de la javadoc </li></ul></ul></ul><ul><ul><ul><ul><li>Modules internes (Transco) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Modules de tiers </li></ul></ul></ul></ul><ul><ul><li>Développeurs ne sont pas affectés par les instabilités causées par un build brisé </li></ul></ul><ul><ul><li>Gains de productivité </li></ul></ul><ul><ul><li>Moins de temps consacré à des activités de mise en place, de mise à jour, de configuration et de correction des environnements de développement </li></ul></ul><ul><ul><li>Plus d’agilité </li></ul></ul>
  18. 18. Bénéfices liés à l’IC <ul><li>1. Feedback amélioré. </li></ul><ul><ul><li> L’IC expose la progresssion constante réalisée par les équipes. </li></ul></ul>
  19. 19. Bénéfices liés à l’IC <ul><li>2. Meilleure détection des erreurs. </li></ul><ul><ul><li> L’IC permet la détection et la résolution des anomalies généralement quelques minutes après leur introduction. Cela requiert le maintien d’une suite de tests unitaires avec un niveau de couverture approprié. </li></ul></ul>
  20. 20. Bénéfices liés à l’IC <ul><li>3. Collaboration améliorée. </li></ul><ul><ul><li>L’IC permet aux développeurs de collaborer efficacement et en toute confiance et sécurité. Ils savent qu’ils peuvent modifier du code, intégrer les modifications et déterminer rapidement l’impact des changements. </li></ul></ul>
  21. 21. Bénéfices liés à l’IC <ul><li>4. Meilleure intégration système </li></ul><ul><ul><li>En intégrant continuellement, on sait qu’on est toujours en mesure de “builder” et déployer l’ensemble du système ce qui réduit les surprises dûes aux problèmes d’intégration en fin de cycle. </li></ul></ul>
  22. 22. Bénéfices liés à l’IC <ul><li>5. Réduction du nombre de changements simultanés devant être fusionnés et testés </li></ul>
  23. 23. Bénéfices liés à l’IC <ul><li>6. Réduction du nombre d’erreurs identifiées durant les tests d'intégration. </li></ul><ul><ul><li>Tous les conflits sont résolus par la personne la plus apte à le faire, avant la diffusion des changements. </li></ul></ul>
  24. 24. Bénéfices liés à l’IC <ul><li>7. Atténuation des risques techniques. </li></ul><ul><ul><li>On dispose en tout temps d’un système à jour et prêt à être utilisé pour effectuer les tests fonctionnels et les tests d'intégration. </li></ul></ul>
  25. 25. Bénéfices liés à l’IC <ul><li>8. Réduction des risques (et de la gestion du risque) </li></ul><ul><ul><li>En intégrant continuellement le système, on connait avec précision quelle fonctionnalité est implantée et fonctionnelle, ce qui améliore notre habilité à prédire ce qui sera livré et quand ça le sera. </li></ul></ul>
  26. 26. Exigences de l’IC <ul><ul><li>Demande un changement de paradigme de la part des développeurs, intégrateurs, gestionnaires de config </li></ul></ul><ul><ul><li>Nouveaux savoirs-faire (Maven, Hudson, Nexus, Sonar) à maîtriser </li></ul></ul><ul><ul><ul><li>Le métier change et évolue </li></ul></ul></ul><ul><ul><li>Il faut travailler « intelligemment » </li></ul></ul><ul><ul><ul><li>Au lieu de l’approche « build all », on utilise le « build if changed » (or affected by change) </li></ul></ul></ul><ul><ul><ul><li>Chaque artéfact/composante ou regroupement de composante a son propre cycle de versionnement et de release </li></ul></ul></ul>
  27. 27. Processus de développement
  28. 28. Processus de livraison et d'acceptation (1)
  29. 29. Processus de livraison et d'acceptation (2)
  30. 30. <ul><li>Merci de votre attention! </li></ul>

×