L'intégration continue chez Pages Jaunes - Build Bot Mobile

46
Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 1

Transcript of L'intégration continue chez Pages Jaunes - Build Bot Mobile

Page 1: L'intégration continue chez Pages Jaunes - Build Bot Mobile

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 1

Page 2: L'intégration continue chez Pages Jaunes - Build Bot Mobile

Intégra(on Con(nue@ PagesJaunes

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 2

Page 3: L'intégration continue chez Pages Jaunes - Build Bot Mobile

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

Page 4: L'intégration continue chez Pages Jaunes - Build Bot Mobile

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

Page 5: L'intégration continue chez Pages Jaunes - Build Bot Mobile

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

Page 6: L'intégration continue chez Pages Jaunes - Build Bot Mobile

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

Page 7: L'intégration continue chez Pages Jaunes - Build Bot Mobile

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

Page 8: L'intégration continue chez Pages Jaunes - Build Bot Mobile

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

Page 9: L'intégration continue chez Pages Jaunes - Build Bot Mobile

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

Page 10: L'intégration continue chez Pages Jaunes - Build Bot Mobile

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

Page 11: L'intégration continue chez Pages Jaunes - Build Bot Mobile

Ce que l'on a mis en place

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 11

Page 12: L'intégration continue chez Pages Jaunes - Build Bot Mobile

Le Build Bot Mobile

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 12

Page 13: L'intégration continue chez Pages Jaunes - Build Bot Mobile

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 13

Page 14: L'intégration continue chez Pages Jaunes - Build Bot Mobile

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 14

Page 15: L'intégration continue chez Pages Jaunes - Build Bot Mobile

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")

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 15

Page 16: L'intégration continue chez Pages Jaunes - Build Bot Mobile

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 16

Page 17: L'intégration continue chez Pages Jaunes - Build Bot Mobile

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 17

Page 18: L'intégration continue chez Pages Jaunes - Build Bot Mobile

Composants - Fonc-ons

• Git: git-clone

• Xcode: xcode-test, xcode-analyze, xcode-archive

• Déploiement: deploy-to-itunesconnect, deploy-to-beta, deploy-to-bitrise

• Rapports: slack-message

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 18

Page 19: L'intégration continue chez Pages Jaunes - Build Bot Mobile

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 19

Page 20: L'intégration continue chez Pages Jaunes - Build Bot Mobile

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

Page 21: L'intégration continue chez Pages Jaunes - Build Bot Mobile

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

Page 22: L'intégration continue chez Pages Jaunes - Build Bot Mobile

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

Page 23: L'intégration continue chez Pages Jaunes - Build Bot Mobile

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 23

Page 24: L'intégration continue chez Pages Jaunes - Build Bot Mobile

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 24

Page 25: L'intégration continue chez Pages Jaunes - Build Bot Mobile

Notre solu*on aujourd'hui

• Une solu*on SaaS (Bitrise)

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 25

Page 26: L'intégration continue chez Pages Jaunes - Build Bot Mobile

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

Page 27: L'intégration continue chez Pages Jaunes - Build Bot Mobile

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

Page 28: L'intégration continue chez Pages Jaunes - Build Bot Mobile

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

Page 29: L'intégration continue chez Pages Jaunes - Build Bot Mobile

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

Page 30: L'intégration continue chez Pages Jaunes - Build Bot Mobile

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

Page 31: L'intégration continue chez Pages Jaunes - Build Bot Mobile

BitriseIntégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 31

Page 32: L'intégration continue chez Pages Jaunes - Build Bot Mobile

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 32

Page 33: L'intégration continue chez Pages Jaunes - Build Bot Mobile

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 33

Page 34: L'intégration continue chez Pages Jaunes - Build Bot Mobile

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 34

Page 35: L'intégration continue chez Pages Jaunes - Build Bot Mobile

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 35

Page 36: L'intégration continue chez Pages Jaunes - Build Bot Mobile

Plus de 60 intégra1onsvers des plateformes .erces

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 36

Page 37: L'intégration continue chez Pages Jaunes - Build Bot Mobile

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 37

Page 38: L'intégration continue chez Pages Jaunes - Build Bot Mobile

Quels tests ?

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 38

Page 39: L'intégration continue chez Pages Jaunes - Build Bot Mobile

Quels tests ?• Tests Unitaires (XCTest)

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 39

Page 40: L'intégration continue chez Pages Jaunes - Build Bot Mobile

Quels tests ?• Tests Unitaires (XCTest)

• Tests Fonc3onnels (Xcode 7 / Calabash / KIF)

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 40

Page 41: L'intégration continue chez Pages Jaunes - Build Bot Mobile

Quels tests ?• Tests Unitaires (XCTest)

• Tests Fonc3onnels (Xcode 7 / Calabash / KIF)

• Tests de performances (Dynatrace)

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 41

Page 42: L'intégration continue chez Pages Jaunes - Build Bot Mobile

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...)

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 42

Page 43: L'intégration continue chez Pages Jaunes - Build Bot Mobile

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

Page 44: L'intégration continue chez Pages Jaunes - Build Bot Mobile

TL;DRBuild 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

Page 45: L'intégration continue chez Pages Jaunes - Build Bot Mobile

Ques%ons ?

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 45

Page 46: L'intégration continue chez Pages Jaunes - Build Bot Mobile

Intégra(on con(nue @ PagesJaunes / CocoaHeads 9 juin 2016 / @jeffreymacko - @j_godon 46