2. iOS @ PagesJaunes
• 5 applications
• 8 développeurs (3 internes) en 2 CT
• 300k VU par jour, 0.30% de crash
• Scrum, une release toute les 6 semaines
• TDD : "Tests Desired" Development
(7% à 48% de couverture du code)
3. Encore une prez sur le
déploiement ?
• 03/2014: Simone Civetta , TestFlight et les outils de
distribution continue
• 12/2013: Rémy Virin , Continuous Integration from Unit
Tests to Hardware
• 03/2013: Laurent Magnin , TestFlight
• 05/2012: Jacques Foucry , Build automatique et
distribution OTA avec Xcode 4.x et Jenkins
• 05/2012: Gaël Durand & Jérémie Toudic: Intégration
continue pour les nuls
4. Encore une prez sur le
déploiement ?
• Oui, on a réinventé la roue
• Non, on n'est pas meilleur que TestFlight,
HockeyApp ou autre. Bien au contraire o/
• On a un workflow ... spécifique ;)
• C'est plus du retour d'expérience et de l'appel à
témoignage/contribution que de la présentation
de solutions «professionnelles»
5. En théorie
Dans la mythologie grecque,
Hermès est une des divinités de
l'Olympe. Il est le messager des
dieux, donneur de la chance,
l'inventeur des poids et des
mesures, le gardien des routes et
des carrefours, des voyageurs et du
commerce. Il guide les héros et
conduit leurs âmes aux Enfers.
Page d'Hermès sur Wikipedia FR
6. En pratique
Hermes, c'est:
!
- une procédure manuelle
- devenu script shell
- placé dans un job jenkins,
- bidouillé au petit bonheur la chance,
- sorti depuis dans une gem
- qui ne demande qu'à être une CLI
respectable.
7. Historique (1/3)
Ma boite email est pleine
Archiver > Exporter AdHoc > Samba
C'est compliqué à installer via iTunes
C'est pas trop tôt !
Archiver > Exporter AdHoc > Email2011
On a codé un AppStore interne à la
boite
2012
8. Historique (2/3)
On veut pouvoir tester sur tous les
serveurs (5 mini, pas de max)
OK, on vous cache un menu de
sélection dans l'appli pour passer d'un
serveur à l'autre
Non, on veut un IPA par serveur
...
C'est pas trop tôt !
OK, on tout mis dans jenkins,
maintenant ça déploie en continu
9. Historique (3/3)
Euh, dans chaque ipa ?
Bon, ben on n'activera nos outils de
validation que dans une version
spécifique
On veut ajouter une librairie (vraiment)
tierce pour faire des tests fonctionnels
2013
Non, non, dans un ipa dédié. Et pour
chaque serveur bien sûr
On veut une application aussi rapide que
l'éclair (pour faire le buzz)
2014
...
10. Pourquoi ?
• Pour apprendre
• Pour pouvoir être utilisé aussi facilement en manuel
qu'en déploiement continu, (un MacMini, ça peut lâcher)
• Parce que 4 schemes : Livraison, Validation, Ranorex,
Release
• Pour mettre à jour le fichier PagesJaunes-Info.plist
• Pour utiliser notre AppStore maison
• Par "facilité"
11. Comment ?
• Si ça sert à générer l'APP, c'est commité (PJPods)
• Si ça sert à génerer l'IPA, ce n'est pas commité
• Tout est (potentiellement) configurable dans un plist
• Indépendant (il faut juste un serveur web, version
sans Parse possible)
• Tous les artefacts sont suffixés avec le SHA-1 du
commit en cours
12. hermes -h
• WIVEP (Work In Very Early Progress)
• git clone git@github.com:teriiehina/hermes.git
• gem build hermes.gemspec;
gem install hermes-1.0.Z.gem
• 3 actions: build , upload , deploy
• un seul paramètre : le plist de déploiement
13. build
• MAJ à jour de l'Info.plist et de l'icône avant génération de
l'ipa
• 4 schemes, 3 versions = 11 IPAs
• 12 minutes sur un MacPro
15. upload & deploy
• les IPA et les DSYM vont sur un serveur (en ssh),
• les plists sur un autre (en ftp) (merci iOS7.1)
• Ajout d'entrées dans parse.com pour le
DTAppStore
• On ne peut pas accéder à l'API Parse depuis le
réseau d'entreprise
16. tl;dl*
• `git clone` doit suffir à compiler
• Punissez quelqu'un en lui faisant faire une prez/
étude sur le déploiement
• Faites tourner les déploiements
• Feature flipping is fun
• mdimport -g /Applications/Xcode.app/Contents/
Library/Spotlight/uuid.mdimporter ~
*too long, didn't listen
17. Shameless plug
• Peter, @teriiehina
• Lead Dev iOS chez PagesJaunes avec @j_godon
• BreakPointFM avec @jeffreymacko
http://www.breakpoint.fm