of 37 /37
De l'intégration continue au déploiement continu sur Android & iOS Thibaud CAVIN Simone CIVETTA Thomas GUERIN

Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

Embed Size (px)

Text of Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin,...

  • 1.De l'intgration continue au dploiement continu sur Android & iOS Thibaud CAVIN Simone CIVETTA Thomas GUERIN

2. Agenda Partie 1Partie 2Partie 3IntroductionIntgration continue sur Android & iOSVers le dploiement continuPourquoi se doter dune usine logicielle aussi sur mobile ?|Automatisation de la compilation, de l'excution des tests unitaires/ fonctionnels...TestFlight pour iOS & Android2 3. Thibaud CAVIN Responsable de la mobilit chez Xebia Dveloppement / Dploiement / Soumission des apps mobiles sur les stores grand-public ou dentreprise Thibaud CAVIN Responsable MobilitSimone CIVETTA Dveloppeur iOS conrm Dveloppement des apps mobiles iOS, Android, hybrides et web mobiles Simone CIVETTA Consultant iOSThomas GUERIN Dveloppeur Java & Android conrm Dveloppement des apps Android et web mobiles, galement des backend auxquels elles sy connectent Thomas GUERIN Consultant Android|3 4. Introduction Pourquoi se doter dune usine logicielle aussi sur mobile ? 5. Le march de la mobilit arrive Une consolidation des acteurs en place : Rachat de la division mobile de Nokia par Microsoft Blackberry ... Suprmatie Android en PDM / iOS pour les services Attentes fortes des utilisateurs95% de PDM* iOS/Android/WPUn relais de croissance dterminant|* : Chiffres de StatCounter GlobalStats en France5 6. Un projet mobile ... ... se ralise sur plusieurs plateformes mobiles (iOS & Android) : Les mmes fonctionnalits, une ergonomie adapte nanmoins Fragmentation toujours importante sur Android... possde un cycle de dveloppement court|6 7. Pourquoi se doter dune usine Des projets mobiles aux produits mobiles : Mises jour rgulires (2 mois) La qualit est importante Retours utilisateurs sur les storesAmliorer son Time-To-Market dans un contexte concurrentiel Assurer la non rgression de ses applications Une intgration de plus en plus complexe avec le SI pour des services mobiles valeur ajoute|7 8. Intgration continue Les principales tapesBuildTests|Analyse8 9. Serveur dintgration continue Utilisation de Jenkins CI Lunit est le job Nombreux plugins disponibles 3 jobs essentiels : Build du projet et excution des tests unitaires Excution des tests fonctionnels Dploiement du livrable|9 10. Intgration continue sur Android Automatisation de la compilation, de l'excution des tests unitaires/ fonctionnels ... 11. Build|11 12. Quel systme de build ?BuildGradle vs Maven Maven : Conguration -> xml Plugin cr par la communaut Bonne intgration dans les IDE Gradle: Conguration -> scripting groovy Nouveau systme de build officiel pour Android Trs vite adopt|12 13. Tests Unitaires|13 14. Tests unitairesTUJUnit ou Robolectric ? JUnit : Difficile de mocker les composants du sdk Utile pour tester la logique du modle mtierRobolectric : Plus de java.lang.RuntimeException: Stub! Excution des tests directement dans la JVM Quelques limitations (gridlayout, menudrawer...)|14 15. Tests Fonctionnels|15 16. Tests fonctionnelsTFFramework dinstrumentation : Intgrer nativement au sein de la plate-forme Permet dintragir avec les composants dune application Faible niveau dabstraction Robotium : Surcouche du framework dinstrumentation Meilleur niveau dabstraction criture des tests simplis|16 17. Analyse|17 18. Analyse des rapports Sonar : Suivi des principales mtriques du code (couverture, duplication...) Adapter le prol qualitSpoon : Excution distribue des tests fonctionnels Gnration de rapports dexcution clairs Format HTML|18 19. DmoDmo|19 20. Intgration continue sur iOS Automatisation de la compilation, de l'excution des tests unitaires/ fonctionnels ... 21. Build|21 22. BuildTargets Gestion des targets sous Xcode : Une target pour chaque conguration de lappli Un job Jenkins pour chaque target|22 23. Cocoa PodsBuildPour ne pas rinventer la roue... cette fois-ci : Plusieurs composants dun projet iOS proviennent de bibliothques open-source Un dependency manager pour les projets Xcode : Cocoa Pods : dependency manager qui les intgre automatiquement les composants dans le projet Congur partir dun chier de texte : podle Chaque target peut avoir des dpendances (ou des versions de dpandances) spciques|23 24. xcodebuildBuildBack to the CLI Le build est excut par un outil en ligne de commande : xcodebuild (fournie avec Xcode) Des wrappers simplient la conguration de loutil et permettent dobtenir du pretty-printing (xctool by Facebook)|24 25. Tests Unitaires|25 26. TUGHUnit Une IHM pour les tests fonctionnels indpendante de lIDE Avec GHUnit lexcution des tests et la visualisation du rsultat peuvent tre raliss sur un terminal ou dans le simulateur Test asynchrones GHUnit supporte nativement l'excution de tests asynchrones Intgration avec Jenkins Excution en ligne de commande avec output en format JUnit XML pour intgrer les rapports dans un Job Jenkins|26 27. Tests Fonctionnels|27 28. TFCucumber Tests crits en langage naturel Cucumber excute des tests fonctionnels dcrits par un langage de description en format naturel et localisable : Gherkin Un test se compose dune liste de steps, qui composent un scnario. Plusieurs scenarios forment un feature. Ruby inside Chaque step Gherkin correspond un block de code crit en ruby|28 29. Calabash-iOSTFUne extension pour Cucumber Calabash-iOS intgre Cucumber dans iOS permet l'excution des steps sur un terminal ou un simulateur enrichit les fonctions ruby sous-jacentes Gherkin en ajoutant des mthodes comme touch, swipe, scroll, etc Rapports dtaills Les rsultats d'un test Calabash peuvent tre enregistrs sous forme de chier HTML, JSON ou JUnit XML et tre facilement intgrs dans Jenkins|29 30. Analyse|30 31. Couverture du code Le bon vieux gcov.. Les mtriques de couverture du code sont fournies par le compilateur, qui produit des chiers en format gcov Intgration dans Jenkins Grce gconv il est possible de convertir les rapports en format Cobertura XML pour les intgrer facilement dans Jenkins|31 32. Visualisation des rapports des Tests Fonctionnels Une extension pour Cucumber Si on dcide d'enregistrer les rsultats sous forme de JSON, il est trs simple de construire un visualiseur de rapports an de prsenter les rsultats des tests de faon plus intuitive et interactive|32 33. DmoDmo|33 34. Vers le dploiement continu TestFlight pour Android & iOS|34 35. Dploiement continuDeployBuild, tests, analyse et .... dploiement A chaque instant, mettre disposition ses applications aux utilisateurs tests Rcupration des retours utilisateurs au plus tt Dploiement continu facile avec Jenkins et Testight Plugin Testight|35 36. DeployTestFlight Crashs et logs distance Builds et utilisateurs Grer ses builds (Dev, RCT, etc.) et ses accs utilisateurs par projetSur iOS & Android !Accder sur le portail TestFlight aux logs et crashs remonts par vos applications Analytics Temps moyen des sessions de tests, types de terminaux ou dOS.. Checkpoints et A/B Testing Dnition de checkpoints dans votre application pour savoir si vos fonctionnalits sont accdes. Egalement|36 37. Merci