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

Intégration Continue a PagesJaunes

Intégration Continue a PagesJaunes

Explication de comment fonctionne notre intégration continue dans le cadre d'une BBL pour Oui.sncf

Avatar for Jeffrey Macko

Jeffrey Macko

October 03, 2018
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 / BBL 3 Octobre 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 / BBL 3 Octobre 4
  3. Contexte PagesJaunes Mobile • 3 Feature Teams • Plusieurs millions

    d'euros inves1s par an • Audience mobile cumulée : + de 30 millions de visites / mois • Un enjeu business important L'Intégra*on Con*nue @ PagesJaunes / BBL 3 Octobre 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 / BBL 3 Octobre 6
  5. Garan%r la qualité de l'appli iOS • Environ 136 584

    lignes de code • Code qui évolue quo/diennement (refactos, Swi9...) • Objec'f de taux de crash < 0,5% • 6 développeurs iOS • Complexité fonc*onnelle L'Intégra*on Con*nue @ PagesJaunes / BBL 3 Octobre 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 / BBL 3 Octobre 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 / BBL 3 Octobre 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 / BBL 3 Octobre 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 / BBL 3 Octobre 11
  10. Ce que l'on a mis en place ! L'Intégra*on Con*nue

    @ PagesJaunes / BBL 3 Octobre 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 / BBL 3 Octobre 16
  12. Environnement • OSX Virtualiser • Isoler la couche OS •

    Garan5r une meilleur reproduc5bilité des tests • Environemment maitriser pour la genera5on de binaire L'Intégra*on Con*nue @ PagesJaunes / BBL 3 Octobre 18
  13. 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 / BBL 3 Octobre 20
  14. 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 / BBL 3 Octobre 22
  15. 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 / BBL 3 Octobre 23
  16. 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 / BBL 3 Octobre 24
  17. Git • Github • Sécurité • Trigger on Push /

    Branch / Tag / PR L'Intégra*on Con*nue @ PagesJaunes / BBL 3 Octobre 26
  18. 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 / BBL 3 Octobre 33
  19. ˆBitrise is a Con-nuous Integra-on and Delivery (CI/CD) Pla:orm as

    a Service (PaaS) with a main focus on mobile app development. It saves developers hours every day by automa-ng tasks that are boring and repe--ve from the moment they finish coding -ll the app lands in an app store. These tasks include unit tests, distribu-ng apps to testers and submiHng apps to stores automa-cally. Thanks to its open source library with 180+ integra-ons, developers can seamlessly connect all the tools they love and use for tes-ng, distribu-on, no-fica-on and more. The former Y Combinator startup has already raised over $3.5M and became the choice of mobile CI/CD pla:orm of companies like InVision, Mapbox and Duolingo. L'Intégra*on Con*nue @ PagesJaunes / BBL 3 Octobre 38
  20. 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 / BBL 3 Octobre 40
  21. Plan • Notre Contexte, nos besoins • Notre Intégra3on Con3nue

    • Quels Tests ? ! • Retours d'experience • Ques3ons L'Intégra*on Con*nue @ PagesJaunes / BBL 3 Octobre 42
  22. Quels tests ? • Tests Unitaires (XCTest) • Tests Fonc,onnels

    • Calabash (Gherkin / Ruby) • 150+ tests de bout en bout • Tests Automa,on Xcode L'Intégra*on Con*nue @ PagesJaunes / BBL 3 Octobre 43
  23. Plan • Notre Contexte, nos besoins • Notre Intégra3on Con3nue

    • Quels Tests ? • Retours d'experience • Ques3ons L'Intégra*on Con*nue @ PagesJaunes / BBL 3 Octobre 44
  24. Quelques chiffres sur iOS • Plus de 5273 intégra4ons •

    Temps d'une intégra1on : • 40 minutes pour les PRs • 55 minutes pour les déploiements • Plus de 3200 Pull Requests • Environ 2 semaines de gagnées par release L'Intégra*on Con*nue @ PagesJaunes / BBL 3 Octobre 45
  25. Bilan après 1 an et 3 mois d'u4lisa4on • 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 4 semaines L'Intégra*on Con*nue @ PagesJaunes / BBL 3 Octobre 46
  26. Quelles limita+ons ? • Temps d'intégra0on limités à 90 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 / BBL 3 Octobre 47
  27. 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 / BBL 3 Octobre 48
  28. Plan • Notre Contexte, nos besoins • Notre Intégra3on Con3nue

    • Quels Tests ? • Retours d'experience • Ques%ons ! L'Intégra*on Con*nue @ PagesJaunes / BBL 3 Octobre 49