Top Banner
Hermes: génération et déploiement d'ipa CocoaHeads Paris, jeudi 11 septembre if it's painful, do it often
17

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

Jun 03, 2015

Download

Technology

Hermes, génération et déploiement d'ipa by Peter Meuel
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Hermes, génération et déploiement d'ipa by Peter Meuel

Hermes: génération et déploiement d'ipa

CocoaHeads Paris, jeudi 11 septembre

if it's painful, do it often

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

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)

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

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

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

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»

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

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

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

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.

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

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 boite2012

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

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

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

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

...

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

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

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

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

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

hermes -h• WIVEP (Work In Very Early Progress)

• git clone [email protected]: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

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

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

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

build

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

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

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

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

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

Shameless plug

• Peter, @teriiehina

• Lead Dev iOS chez PagesJaunes avec @j_godon

• BreakPointFM avec @jeffreymacko

http://www.breakpoint.fm