SlideShare une entreprise Scribd logo
1  sur  17
Télécharger pour lire hors ligne
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 release toute les 6 semaines
• TDD : "Tests Desired" Development

(7% à 48% de couverture du code)
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
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»
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
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.
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
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
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
...
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é"
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
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
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
build
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
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
Shameless plug
• Peter, @teriiehina
• Lead Dev iOS chez PagesJaunes avec @j_godon
• BreakPointFM avec @jeffreymacko
http://www.breakpoint.fm

Contenu connexe

Tendances

Jenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerJenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerGeeks Anonymes
 
Jenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteJenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteStephane Couzinier
 
CRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - QuickieCRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - QuickieArnaud Héritier
 
Gérer son environnement de développement avec Docker
Gérer son environnement de développement avec DockerGérer son environnement de développement avec Docker
Gérer son environnement de développement avec DockerJulien Dubois
 
L'intégration continue avec Bitrise
L'intégration continue avec BitriseL'intégration continue avec Bitrise
L'intégration continue avec BitriseCocoaHeads France
 
Fastlane snapshot presentation
Fastlane snapshot presentationFastlane snapshot presentation
Fastlane snapshot presentationCocoaHeads France
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924Gregory Boissinot
 
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...Cédric Leblond
 
Laravel yet another framework
Laravel  yet another frameworkLaravel  yet another framework
Laravel yet another frameworkLAHAXE Arnaud
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsFactoVia
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+ekino
 
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Silicon Comté
 
WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
 WordCamp Lyon 2015 - WordPress, Git et l'intégration continue WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
WordCamp Lyon 2015 - WordPress, Git et l'intégration continueStéphane HULARD
 
Migrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds JavaMigrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds JavaCédric Leblond
 
Présentation de nodejs
Présentation de nodejsPrésentation de nodejs
Présentation de nodejs13p
 
CocoaHeads Rennes #6
CocoaHeads Rennes #6CocoaHeads Rennes #6
CocoaHeads Rennes #6CocoaHeadsRNS
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipelineNicolas wallerand
 

Tendances (20)

Jenkins Workflow
Jenkins WorkflowJenkins Workflow
Jenkins Workflow
 
Jenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerJenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagner
 
Jenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteJenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverte
 
CRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - QuickieCRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - Quickie
 
Gérer son environnement de développement avec Docker
Gérer son environnement de développement avec DockerGérer son environnement de développement avec Docker
Gérer son environnement de développement avec Docker
 
L'intégration continue avec Bitrise
L'intégration continue avec BitriseL'intégration continue avec Bitrise
L'intégration continue avec Bitrise
 
Fastlane snapshot presentation
Fastlane snapshot presentationFastlane snapshot presentation
Fastlane snapshot presentation
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924
 
Ansible et Jenkins
Ansible et JenkinsAnsible et Jenkins
Ansible et Jenkins
 
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
 
Laravel yet another framework
Laravel  yet another frameworkLaravel  yet another framework
Laravel yet another framework
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure Devops
 
JENKINS_BreizhJUG_20111003
JENKINS_BreizhJUG_20111003JENKINS_BreizhJUG_20111003
JENKINS_BreizhJUG_20111003
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+
 
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
 
WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
 WordCamp Lyon 2015 - WordPress, Git et l'intégration continue WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
 
Migrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds JavaMigrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds Java
 
Présentation de nodejs
Présentation de nodejsPrésentation de nodejs
Présentation de nodejs
 
CocoaHeads Rennes #6
CocoaHeads Rennes #6CocoaHeads Rennes #6
CocoaHeads Rennes #6
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
 

En vedette

02 el regreso de tarzan burroughs
02 el regreso de tarzan burroughs02 el regreso de tarzan burroughs
02 el regreso de tarzan burroughsJose Torrico
 
Les rivières pourpres
Les rivières pourpresLes rivières pourpres
Les rivières pourpresMissAmoros
 
Who is who
Who is whoWho is who
Who is whoUca
 
Apprendre en jouant : un semestre de TD en Géosciences à l'Université
Apprendre en jouant : un semestre de TD en Géosciences à l'UniversitéApprendre en jouant : un semestre de TD en Géosciences à l'Université
Apprendre en jouant : un semestre de TD en Géosciences à l'UniversitéNicolas Coltice
 
Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...
Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...
Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...Emilie Robert
 
Rendre votre entreprise visible sur facebook
Rendre votre entreprise visible sur facebookRendre votre entreprise visible sur facebook
Rendre votre entreprise visible sur facebookValérie Demont (-Steck)
 
El despido por absentismo tras la reforma laboral de 2012. A propósito de la ...
El despido por absentismo tras la reforma laboral de 2012. A propósito de la ...El despido por absentismo tras la reforma laboral de 2012. A propósito de la ...
El despido por absentismo tras la reforma laboral de 2012. A propósito de la ...Universidad Autónoma de Barcelona
 
F:\todo\diostedice
F:\todo\diostediceF:\todo\diostedice
F:\todo\diostediceguest494902
 
Verciones de macromedia
Verciones de macromediaVerciones de macromedia
Verciones de macromediamishuhot
 
HIF Paris 2014 - BULL - Success Story : Les solutions HDS de services de fich...
HIF Paris 2014 - BULL - Success Story : Les solutions HDS de services de fich...HIF Paris 2014 - BULL - Success Story : Les solutions HDS de services de fich...
HIF Paris 2014 - BULL - Success Story : Les solutions HDS de services de fich...Hitachi Data Systems France
 
Memoria proyecto educación intercultural 07 08
Memoria proyecto educación intercultural 07 08Memoria proyecto educación intercultural 07 08
Memoria proyecto educación intercultural 07 08IES El Rincón
 
Presentación1
Presentación1Presentación1
Presentación1jeiandrew
 
Estudio de caso
Estudio de casoEstudio de caso
Estudio de casoMarta
 
La rentabilité du tourisme durable pour les opérateurs Saha Forest Camp
La rentabilité du tourisme durable pour les opérateurs Saha Forest CampLa rentabilité du tourisme durable pour les opérateurs Saha Forest Camp
La rentabilité du tourisme durable pour les opérateurs Saha Forest CampOffice Nationale du Tourisme Madagascar
 
Santé des étudiants, un état des lieux
Santé des étudiants, un état des lieuxSanté des étudiants, un état des lieux
Santé des étudiants, un état des lieuxMaxime GIGNON
 
Charte droits et responsabilités - présentation ville
Charte droits et responsabilités - présentation villeCharte droits et responsabilités - présentation ville
Charte droits et responsabilités - présentation villeLouis-Alexandre Cazal
 

En vedette (20)

Asens 1952 3_69__109_0
Asens 1952 3_69__109_0Asens 1952 3_69__109_0
Asens 1952 3_69__109_0
 
02 el regreso de tarzan burroughs
02 el regreso de tarzan burroughs02 el regreso de tarzan burroughs
02 el regreso de tarzan burroughs
 
Les rivières pourpres
Les rivières pourpresLes rivières pourpres
Les rivières pourpres
 
Qué es arte
Qué es arteQué es arte
Qué es arte
 
Who is who
Who is whoWho is who
Who is who
 
Apprendre en jouant : un semestre de TD en Géosciences à l'Université
Apprendre en jouant : un semestre de TD en Géosciences à l'UniversitéApprendre en jouant : un semestre de TD en Géosciences à l'Université
Apprendre en jouant : un semestre de TD en Géosciences à l'Université
 
Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...
Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...
Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...
 
Rendre votre entreprise visible sur facebook
Rendre votre entreprise visible sur facebookRendre votre entreprise visible sur facebook
Rendre votre entreprise visible sur facebook
 
Day after
Day after Day after
Day after
 
El despido por absentismo tras la reforma laboral de 2012. A propósito de la ...
El despido por absentismo tras la reforma laboral de 2012. A propósito de la ...El despido por absentismo tras la reforma laboral de 2012. A propósito de la ...
El despido por absentismo tras la reforma laboral de 2012. A propósito de la ...
 
F:\todo\diostedice
F:\todo\diostediceF:\todo\diostedice
F:\todo\diostedice
 
Verciones de macromedia
Verciones de macromediaVerciones de macromedia
Verciones de macromedia
 
HIF Paris 2014 - BULL - Success Story : Les solutions HDS de services de fich...
HIF Paris 2014 - BULL - Success Story : Les solutions HDS de services de fich...HIF Paris 2014 - BULL - Success Story : Les solutions HDS de services de fich...
HIF Paris 2014 - BULL - Success Story : Les solutions HDS de services de fich...
 
Memoria proyecto educación intercultural 07 08
Memoria proyecto educación intercultural 07 08Memoria proyecto educación intercultural 07 08
Memoria proyecto educación intercultural 07 08
 
Presentación1
Presentación1Presentación1
Presentación1
 
Actividad 8.0
Actividad 8.0Actividad 8.0
Actividad 8.0
 
Estudio de caso
Estudio de casoEstudio de caso
Estudio de caso
 
La rentabilité du tourisme durable pour les opérateurs Saha Forest Camp
La rentabilité du tourisme durable pour les opérateurs Saha Forest CampLa rentabilité du tourisme durable pour les opérateurs Saha Forest Camp
La rentabilité du tourisme durable pour les opérateurs Saha Forest Camp
 
Santé des étudiants, un état des lieux
Santé des étudiants, un état des lieuxSanté des étudiants, un état des lieux
Santé des étudiants, un état des lieux
 
Charte droits et responsabilités - présentation ville
Charte droits et responsabilités - présentation villeCharte droits et responsabilités - présentation ville
Charte droits et responsabilités - présentation ville
 

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

Développer et déployer une application php maintenable
Développer et déployer une application php maintenableDévelopper et déployer une application php maintenable
Développer et déployer une application php maintenableLeTesteur
 
Build automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et JenkinsBuild automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et JenkinsCocoaHeads France
 
wallabag, comment on a migré vers symfony3
wallabag, comment on a migré vers symfony3wallabag, comment on a migré vers symfony3
wallabag, comment on a migré vers symfony3Nicolas Lœuillet
 
Publier une application mobile en un clic
Publier une application mobile en un clicPublier une application mobile en un clic
Publier une application mobile en un clicFabernovel
 
Ecrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableEcrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableChristophe Villeneuve
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
Introduction au DevOps @SfPot 2014
Introduction au DevOps @SfPot 2014Introduction au DevOps @SfPot 2014
Introduction au DevOps @SfPot 2014Jonathan Martin
 
CocoaHeads Rennes #4 : Tests automatisés sur iOS
CocoaHeads Rennes #4 : Tests automatisés sur iOSCocoaHeads Rennes #4 : Tests automatisés sur iOS
CocoaHeads Rennes #4 : Tests automatisés sur iOSCocoaHeadsRNS
 
Orchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesOrchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesXavier Gorse
 
08 jus 20101123_cae_linux_presentation
08 jus 20101123_cae_linux_presentation08 jus 20101123_cae_linux_presentation
08 jus 20101123_cae_linux_presentationOpenCascade
 
Performance au quotidien dans un environnement symfony
Performance au quotidien dans un environnement symfonyPerformance au quotidien dans un environnement symfony
Performance au quotidien dans un environnement symfonyXavier Leune
 
Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Amélie DUVERNET
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Jean Gabès
 
l'Industrialisation (avec PHP) @MMIConnect
l'Industrialisation (avec PHP) @MMIConnectl'Industrialisation (avec PHP) @MMIConnect
l'Industrialisation (avec PHP) @MMIConnectFlorent DENIS
 
Java uik-chap1-intro java
Java uik-chap1-intro javaJava uik-chap1-intro java
Java uik-chap1-intro javaAmel Morchdi
 

Similaire à Hermes, génération et déploiement d'ipa by Peter Meuel (20)

Développer et déployer une application php maintenable
Développer et déployer une application php maintenableDévelopper et déployer une application php maintenable
Développer et déployer une application php maintenable
 
Build automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et JenkinsBuild automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et Jenkins
 
wallabag, comment on a migré vers symfony3
wallabag, comment on a migré vers symfony3wallabag, comment on a migré vers symfony3
wallabag, comment on a migré vers symfony3
 
Publier une application mobile en un clic
Publier une application mobile en un clicPublier une application mobile en un clic
Publier une application mobile en un clic
 
FinistJUG - Apache TomEE
FinistJUG - Apache TomEEFinistJUG - Apache TomEE
FinistJUG - Apache TomEE
 
Ecrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableEcrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenable
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
Introduction au DevOps @SfPot 2014
Introduction au DevOps @SfPot 2014Introduction au DevOps @SfPot 2014
Introduction au DevOps @SfPot 2014
 
CocoaHeads Rennes #4 : Tests automatisés sur iOS
CocoaHeads Rennes #4 : Tests automatisés sur iOSCocoaHeads Rennes #4 : Tests automatisés sur iOS
CocoaHeads Rennes #4 : Tests automatisés sur iOS
 
Cours1
Cours1Cours1
Cours1
 
Orchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesOrchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notes
 
08 jus 20101123_cae_linux_presentation
08 jus 20101123_cae_linux_presentation08 jus 20101123_cae_linux_presentation
08 jus 20101123_cae_linux_presentation
 
Performance au quotidien dans un environnement symfony
Performance au quotidien dans un environnement symfonyPerformance au quotidien dans un environnement symfony
Performance au quotidien dans un environnement symfony
 
Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.
 
Mysql
MysqlMysql
Mysql
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)
 
l'Industrialisation (avec PHP) @MMIConnect
l'Industrialisation (avec PHP) @MMIConnectl'Industrialisation (avec PHP) @MMIConnect
l'Industrialisation (avec PHP) @MMIConnect
 
Java uik-chap1-intro java
Java uik-chap1-intro javaJava uik-chap1-intro java
Java uik-chap1-intro java
 
Cours cordova & REST
Cours cordova & RESTCours cordova & REST
Cours cordova & REST
 

Plus de CocoaHeads France

Plus de CocoaHeads France (20)

Mutation testing for a safer Future
Mutation testing for a safer FutureMutation testing for a safer Future
Mutation testing for a safer Future
 
iOS App Group for Debugging
iOS App Group for DebuggingiOS App Group for Debugging
iOS App Group for Debugging
 
Asynchronous swift
Asynchronous swiftAsynchronous swift
Asynchronous swift
 
Visual accessibility in iOS11
Visual accessibility in iOS11Visual accessibility in iOS11
Visual accessibility in iOS11
 
My script - One year of CocoaHeads
My script - One year of CocoaHeadsMy script - One year of CocoaHeads
My script - One year of CocoaHeads
 
Ui testing dealing with push notifications
Ui testing dealing with push notificationsUi testing dealing with push notifications
Ui testing dealing with push notifications
 
CONTINUOUS DELIVERY WITH FASTLANE
CONTINUOUS DELIVERY WITH FASTLANECONTINUOUS DELIVERY WITH FASTLANE
CONTINUOUS DELIVERY WITH FASTLANE
 
Super combinators
Super combinatorsSuper combinators
Super combinators
 
Design like a developer
Design like a developerDesign like a developer
Design like a developer
 
Handle the error
Handle the errorHandle the error
Handle the error
 
Quoi de neuf dans iOS 10.3
Quoi de neuf dans iOS 10.3Quoi de neuf dans iOS 10.3
Quoi de neuf dans iOS 10.3
 
IoT Best practices
 IoT Best practices IoT Best practices
IoT Best practices
 
SwiftyGPIO
SwiftyGPIOSwiftyGPIO
SwiftyGPIO
 
Présentation de HomeKit
Présentation de HomeKitPrésentation de HomeKit
Présentation de HomeKit
 
Programme MFI retour d'expérience
Programme MFI retour d'expérienceProgramme MFI retour d'expérience
Programme MFI retour d'expérience
 
How to communicate with Smart things?
How to communicate with Smart things?How to communicate with Smart things?
How to communicate with Smart things?
 
Build a lego app with CocoaPods
Build a lego app with CocoaPodsBuild a lego app with CocoaPods
Build a lego app with CocoaPods
 
Let's migrate to Swift 3.0
Let's migrate to Swift 3.0Let's migrate to Swift 3.0
Let's migrate to Swift 3.0
 
Project Entourage
Project EntourageProject Entourage
Project Entourage
 
What's new in iOS9
What's new in iOS9What's new in iOS9
What's new in iOS9
 

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

  • 1. Hermes: génération et déploiement d'ipa CocoaHeads Paris, jeudi 11 septembre if it's painful, do it often
  • 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
  • 14. build
  • 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