L’intégration continue chez PagesJaunes ou Comment déployer une appli iOS de 60 000 lignes de façon fiable et automatisée ? Pour maintenir son taux de crash inférieur à 0,5%, PagesJaunes a eu besoin de mettre en place une chaine de déploiement fiable et industrialisée appelée Build Bot Mobile. Jeffrey Macko et Jérémie Godon vous présenteront les besoins, les outils, le workflow et les différents tests de cet outil.
3. Quel contexte, quels besoins ?
Quelle intégra-on con-nue ?
Quels tests ?
Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 3
4. Contexte PagesJaunes Mobile
• 6 équipes (4 Feature Teams + équipe Tech + Back office mobile)
• 50 personnes
• Plusieurs millions d'euros invesBs par an
• Audience mobile cumulée : + de 30 millions de visites / mois
• SLA : 99,9 %
• Un enjeu business important
Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 4
5. Quels besoins ?
Garan%r la qualité de l'applica%on en u%lisant un ou)l adapté
Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 5
6. Garan%r la qualité de l'appli iOS
• + 60 000 lignes de code
• Obliga(on de taux de crash < 0,5%
• 10 developpeurs iOS
• Complexité fonc'onnelle
Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 6
7. Choisir un ou*l adapté
• Simple à prendre en main et à u.liser
• Performant
• Modulaire
• Réduire la maintenance au minimum
Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 7
8. Quelle Intégra-on Con-nue ?
Quel historique ? À quoi on a abou2 concrètement ?
Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 8
9. Historique
• Jenkins / GitLab
• Hébergé et géré en interne (temps de maintenance important)
• Divers problèmes : OSX ou Xcode pas à jour, problèmes réseaux,
simulateur qui plante, etc...
Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 9
10. Historique
• Jenkins / GitLab
• Hébergé et géré en interne (temps de maintenance important)
• Divers problèmes : OSX ou Xcode pas à jour, problèmes réseaux,
simulateur qui plante, etc...
Il nous fallait quelque chose de plus efficace
Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 10
11. Ce que l'on a mis en place
Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 11
12. Le Build Bot Mobile
Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 12
20. Workflows
Les plus importants :
• Workflows de Tests
• Workflows de Déploiement
Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 20
21. Workflows - Tests
Ce Workflow se déclenche :
• à chaque pull request
• à la créa-on d'une branche nommée feature/*
• au push du code sur ce4e branche
Les tests sont bloquants : s'ils ne passent pas, la pull request ne
passe pas !
Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 21
22. Workflows - Deploy
• Develop
• Déclenché au push sur la branche develop
• Généra1on de changelog
• Déploiement sur fabric beta et mini page web
• Master : Idem mais deployé sur l'App Store
Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 22
25. Notre solu*on aujourd'hui
• Une solu*on SaaS (Bitrise)
Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 25
26. Notre solu*on aujourd'hui
• Une solu*on SaaS (Bitrise)
• Maintenance : pas de materiel, peu de logiciel
Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 26
27. Notre solu*on aujourd'hui
• Une solu*on SaaS (Bitrise)
• Maintenance : pas de materiel, peu de logiciel
• Des ou*ls simples et rapides à administrer
Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 27
28. Notre solu*on aujourd'hui
• Une solu*on SaaS (Bitrise)
• Maintenance : pas de materiel, peu de logiciel
• Des ou*ls simples et rapides à administrer
• Modulaire
Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 28
29. Notre solu*on aujourd'hui
• Une solu*on SaaS (Bitrise)
• Maintenance : pas de materiel, peu de logiciel
• Des ou*ls simples et rapides à administrer
• Modulaire
• Intégra*ons avec Github, Slack, Fabric, AppStore, ...
Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 29
30. Notre solu*on aujourd'hui
• Une solu*on SaaS (Bitrise)
• Maintenance : pas de materiel, peu de logiciel
• Des ou*ls simples et rapides à administrer
• Modulaire
• Intégra*ons avec Github, Slack, Fabric, AppStore, ...
• Open Source
Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 30
43. Quels tests ?
• Tests Unitaires (XCTest)
• Tests Fonc3onnels (Xcode 7 / Calabash / KIF)
• Tests de performances (Dynatrace)
• Tests des ouvertures externes de l'applica3on (Apple Plan,
Universal links, Spotligth...)
• Analyse sta3que (Faux Pas) - Work in progress...
Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 43
44. TL;DR
Build Bot Mobile
• Exécu'on des tests et deploiement automa'sés à chaque
modifica'on pushée sur le repo Git
• Sérénité lors de refactorisa'on ou de nouveaux développements
• Une version à jour & stable est toujours disponible pour tous
(QA, PO, MKT, etc...)
• Next Steps : Android, nouveaux modules (analyse de flux, stats)
Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 44