Hermes: génération et
déploiement d'ipa
CocoaHeads Paris, jeudi 11 septembre
if it's painful, do it often
iOS @ PagesJaunes
• 5 applications
• 8 développeurs (3 internes) en 2 CT
• 300k VU par jour, 0.30% de crash
• Scrum, une r...
Encore une prez sur le
déploiement ?
• 03/2014: Simone Civetta , TestFlight et les outils de
distribution continue
• 12/20...
Encore une prez sur le
déploiement ?
• Oui, on a réinventé la roue
• Non, on n'est pas meilleur que TestFlight,
HockeyApp ...
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 ...
En pratique
Hermes, c'est:
!
- une procédure manuelle
- devenu script shell
- placé dans un job jenkins,
- bidouillé au pe...
Historique (1/3)
Ma boite email est pleine
Archiver > Exporter AdHoc > Samba
C'est compliqué à installer via iTunes
C'est ...
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 ...
Historique (3/3)
Euh, dans chaque ipa ?
Bon, ben on n'activera nos outils de
validation que dans une version
spécifique
On ...
Pourquoi ?
• Pour apprendre
• Pour pouvoir être utilisé aussi facilement en manuel
qu'en déploiement continu, (un MacMini,...
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 e...
hermes -h
• WIVEP (Work In Very Early Progress)
• git clone git@github.com:teriiehina/hermes.git
• gem build hermes.gemspe...
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 ...
build
upload & deploy
• les IPA et les DSYM vont sur un serveur (en ssh),
• les plists sur un autre (en ftp) (merci iOS7.1)
• Aj...
tl;dl*
• `git clone` doit suffir à compiler
• Punissez quelqu'un en lui faisant faire une prez/
étude sur le déploiement
• ...
Shameless plug
• Peter, @teriiehina
• Lead Dev iOS chez PagesJaunes avec @j_godon
• BreakPointFM avec @jeffreymacko
http:/...
Prochain SlideShare
Chargement dans…5
×

Hermes, génération et déploiement d'ipa by Peter Meuel

5 801 vues

Publié le

Hermes, génération et déploiement d'ipa by Peter Meuel

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
5 801
Sur SlideShare
0
Issues des intégrations
0
Intégrations
5 200
Actions
Partages
0
Téléchargements
7
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Hermes, génération et déploiement d'ipa by Peter Meuel

  1. 1. Hermes: génération et déploiement d'ipa CocoaHeads Paris, jeudi 11 septembre if it's painful, do it often
  2. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  14. 14. build
  15. 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. 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. 17. Shameless plug • Peter, @teriiehina • Lead Dev iOS chez PagesJaunes avec @j_godon • BreakPointFM avec @jeffreymacko http://www.breakpoint.fm

×