Upgrade to Pro — share decks privately, control downloads, hide ads and more …

L'Intégration Continue @PagesJaunes

L'Intégration Continue @PagesJaunes

Présentation du fonctionnement de l'intégration continue a Pagesjaunes

Avatar for Jeffrey Macko

Jeffrey Macko

March 15, 2017
Tweet

More Decks by Jeffrey Macko

Other Decks in Programming

Transcript

  1. Plan • Notre Contexte, nos besoins • Notre Intégra3on Con3nue

    • Quels Tests ? • Retours d'experience • Ques3ons L'Intégra*on Con*nue @ PagesJaunes / Xebia's Mobile Things - 15 mars 2017 / @YellowTeam_iOS 3
  2. Plan • Notre Contexte, nos besoins • Notre Intégra-on Con-nue

    • Quels Tests ? • Retours d'experience • Ques-ons L'Intégra*on Con*nue @ PagesJaunes / Xebia's Mobile Things - 15 mars 2017 / @YellowTeam_iOS 4
  3. 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 • Un enjeu business important L'Intégra*on Con*nue @ PagesJaunes / Xebia's Mobile Things - 15 mars 2017 / @YellowTeam_iOS 5
  4. Quels besoins ? Garan%r la qualité de l'applica%on en u%lisant

    un ou)l adapté iOS & Android ! L'Intégra*on Con*nue @ PagesJaunes / Xebia's Mobile Things - 15 mars 2017 / @YellowTeam_iOS 6
  5. Garan%r la qualité de l'appli iOS • Environ 95 000

    lignes de code • Code qui évolue quo/diennement (refactos, Swi9...) • Objec'f de taux de crash < 0,5% • 12 développeurs iOS • Complexité fonc*onnelle L'Intégra*on Con*nue @ PagesJaunes / Xebia's Mobile Things - 15 mars 2017 / @YellowTeam_iOS 7
  6. Choisir un ou*l adapté • Simple à prendre en main

    et à u.liser • Performant • Modulaire • Réduire la maintenance au minimum L'Intégra*on Con*nue @ PagesJaunes / Xebia's Mobile Things - 15 mars 2017 / @YellowTeam_iOS 8
  7. Plan • Notre Contexte, nos besoins • Notre Intégra,on Con,nue

    • Quels Tests ? • Retours d'experience • Ques9ons L'Intégra*on Con*nue @ PagesJaunes / Xebia's Mobile Things - 15 mars 2017 / @YellowTeam_iOS 9
  8. 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... L'Intégra*on Con*nue @ PagesJaunes / Xebia's Mobile Things - 15 mars 2017 / @YellowTeam_iOS 10
  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... Il nous fallait quelque chose de plus efficace ! L'Intégra*on Con*nue @ PagesJaunes / Xebia's Mobile Things - 15 mars 2017 / @YellowTeam_iOS 11
  10. Ce que l'on a mis en place ! L'Intégra*on Con*nue

    @ PagesJaunes / Xebia's Mobile Things - 15 mars 2017 / @YellowTeam_iOS 13
  11. Infra - Hébergement • Ges%on du parc machine (installa%on /

    entre%en) • Réseaux (fiable et sans restric%on) • Sécurité (garan%r un environnement sécurisé) • Logiciels (installa%on / mise à jour) • Environnement sain (toujours dans un état "propre") L'Intégra*on Con*nue @ PagesJaunes / Xebia's Mobile Things - 15 mars 2017 / @YellowTeam_iOS 21
  12. Composants - Fonc-ons • Git: git-clone • Xcode: xcode-test, xcode-analyze,

    xcode-archive • Déploiement: deploy-to-itunesconnect, deploy-to-beta • Rapports: slack-message, send-email-mailgun L'Intégra*on Con*nue @ PagesJaunes / Xebia's Mobile Things - 15 mars 2017 / @YellowTeam_iOS 24
  13. Workflows • Workflow de Tests Unitaires • Workflow de Tests

    Fonc.onnels • Workflow de Déploiement • Workflow de Produc.on L'Intégra*on Con*nue @ PagesJaunes / Xebia's Mobile Things - 15 mars 2017 / @YellowTeam_iOS 26
  14. Workflows - Tests Unitaires Les TU sont bloquants : s'ils

    ne passent pas, la Pull Request ne passe pas ! • Se déclenche à chaque pull request • Au push sur les branches develop, release et feat/* • Vérifie la configura3on du projet • No3fie GitHub et les devs via Slack L'Intégra*on Con*nue @ PagesJaunes / Xebia's Mobile Things - 15 mars 2017 / @YellowTeam_iOS 27
  15. Workflows - Déploiement • Se déclenche à chaque push sur

    develop et release • Génère le changelog • Déploie la version sur Fabric Beta • No6fie les devs et la rece9e via Slack & email L'Intégra*on Con*nue @ PagesJaunes / Xebia's Mobile Things - 15 mars 2017 / @YellowTeam_iOS 28
  16. Notre solu*on aujourd'hui • Une solu*on SaaS • 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 L'Intégra*on Con*nue @ PagesJaunes / Xebia's Mobile Things - 15 mars 2017 / @YellowTeam_iOS 34
  17. Plus de 120 intégra2ons vers des plateformes .erces L'Intégra*on Con*nue

    @ PagesJaunes / Xebia's Mobile Things - 15 mars 2017 / @YellowTeam_iOS 40
  18. Quelques composants custom • Généra'on du Changelog • Mapping de

    compte GitHub du commit au pseudo Slack • Vérifica'on de la configura0on du build Xcode • D'autres en cours de développement (Fauxpas / Infer / Privoxy) L'Intégra*on Con*nue @ PagesJaunes / Xebia's Mobile Things - 15 mars 2017 / @YellowTeam_iOS 41
  19. Plan • Notre Contexte, nos besoins • Notre Intégra3on Con3nue

    • Quels Tests ? ! • Retours d'experience • Ques3ons L'Intégra*on Con*nue @ PagesJaunes / Xebia's Mobile Things - 15 mars 2017 / @YellowTeam_iOS 43
  20. Quels tests ? • Tests Unitaires (XCTest) • Tests Fonc,onnels

    • Calabash (Gherkin / Ruby) • 50+ tests de bout en bout • Tests de performances (Dynatrace) • Tests automa6sés des stats (en cours) L'Intégra*on Con*nue @ PagesJaunes / Xebia's Mobile Things - 15 mars 2017 / @YellowTeam_iOS 44
  21. Plan • Notre Contexte, nos besoins • Notre Intégra3on Con3nue

    • Quels Tests ? • Retours d'experience • Ques3ons L'Intégra*on Con*nue @ PagesJaunes / Xebia's Mobile Things - 15 mars 2017 / @YellowTeam_iOS 45
  22. Quelques chiffres sur iOS • Plus de 3240 intégra4ons •

    Temps d'une intégra1on : • 15-20 minutes pour les PRs • 25-30 minutes pour les déploiements • Plus de 1140 Pull Requests • Plus de 1600 déploiements sur Beta • Environ 2 semaines de gagnées par release L'Intégra*on Con*nue @ PagesJaunes / Xebia's Mobile Things - 15 mars 2017 / @YellowTeam_iOS 46
  23. Bilan après 9 mois d'u1lisa1on • Une IC plus fiable

    • Les devs n'ont plus à générer de version pour la QA ou le MKT • Meilleure réac)vité entre les devs et la QA (US + JIRA) • Meilleure autonomie des équipes • Simplifica)on et industrialisa)on de la soumission AppStore • Release toutes les 6 semaines (2 semaines de gagnées) L'Intégra*on Con*nue @ PagesJaunes / Xebia's Mobile Things - 15 mars 2017 / @YellowTeam_iOS 47
  24. Quelles limita+ons ? • Temps d'intégra0on limités à 45 min

    maximum • Performances des VM limitées (par;culièrement pour Calabash) • Accès aux ressources internes de l’entreprise : • Serveurs d'intégra;ons • JIRA L'Intégra*on Con*nue @ PagesJaunes / Xebia's Mobile Things - 15 mars 2017 / @YellowTeam_iOS 48
  25. TL;DR Build Bot Mobile • Exécu'on des tests et deploiement

    automa'sés • Vérifica'on des différentes configura1ons • Sérénité lors de refactorisa'on ou de nouveaux développements • Une version à jour & stable toujours disponible (QA, PO, MKT...) • NeJe augmenta'on de la vélocité des équipes • Cependant les performances de Bitrise ne sont pas op'males L'Intégra*on Con*nue @ PagesJaunes / Xebia's Mobile Things - 15 mars 2017 / @YellowTeam_iOS 49
  26. Plan • Notre Contexte, nos besoins • Notre Intégra3on Con3nue

    • Quels Tests ? • Retours d'experience • Ques%ons ! L'Intégra*on Con*nue @ PagesJaunes / Xebia's Mobile Things - 15 mars 2017 / @YellowTeam_iOS 50