A l'occasion de la conférence web2day du 13 juin 2018, Claire Dufretelle, Head of Product Management chez Fabernovel Technologies, prend la parole sur l'intégration continue sur mobile & une introduction à Fastlane.
"Il est extrêmement pénible de publier une application mobile, les étapes étant nombreuses et complexes. La moindre erreur peut obliger à tout recommencer. Une mise en production de quelques heures peut finalement prendre la journée. Et pourtant, le sujet est accessible à tous, même à ceux qui ne sont pas développeurs professionnels.
> Il ne faut pas laisser faire à un humain un travail de robot mais automatiser
> L’automatisation de la publication se fait aisément grâce à un ensemble d’outils : Fastlane
> Fastlane peut être customisé à loisir pour s’adapter à vos process
> Il est possible de pousser la customisation très loin jusqu’à la publication d'une application mobile
>> Tout le monde peut se lancer pour publier une application mobile en un clic."
2. 2//
Sommaire
01 //
02 //
03 //
04 //
05 //
Qui suis-je ?
Ce que c’est de publier une appli
Automatiser les livraisons avec Fastlane
Aller plus haut
Retours d’expérience
4. 4//
# Product manager
# Design UX
# Delivery
# Android
# iOS
Lyon, un peu Paris
Claire Dufetrelle
Formations
Expériences
Lagardère, Cellule innovation
FABERNOVEL TECHNOLOGIES depuis 2013
Projets
Head of Product Management
5. Intelligence artificielleApplications mobiles
Nous associons design et technologie
pour créer des produits numériques à
fort impact qui transforment le
business de nos clients
Nous concevons et développons des
produits de haute qualité utilisés
quotidiennement par plus de 100
millions de personnes dans le
monde
Nous accélérons la transformation
de votre business en connectant
l'innovation digitale à vos systèmes
existants
Nous créons de nouveaux canaux
de communication entre nos
clients et leurs utilisateurs
Plateformes digitales
APPLICATIONS WEB & MOBILES | ARCHITECTURE SI| BIG DATA | BOTS | DESIGN D’API | DESIGN UX-UI | DEVOPS | INTELLIGENCE ARTIFICIELLE
MACHINE LEARNING | PRODUCT MANAGEMENT | SAAS-PAAS | SECURITY BY DESIGN | STRATEGIE ET ROADMAP MOBILE
9. 9//
Publier une appli iOS
En réalité
Com
piler
le
code
Signer
U
pload
sur
le
store
Tada
!
Archiver
Préparer
le
w
orkspace
Récupérer
la
dernière
version
du
code
Re-signer
M
ettre
à
jour
les
m
étadonnées
Soum
ettre
à
vérification
10. 10//
Publier une appli iOS
En réalité
Com
piler
le
code
Signer
U
pload
sur
le
store
Tada
!
Archiver
M
ettre
à
jour
le
w
ording
Récupérer
la
dernière
version
du
code
Re-signer
Fichiers
de
sym
bolisation
Soum
ettre
à
vérification
Préparer
le
w
orkspace
Augm
enter
le
num
éro
de
version
U
pload
pour
backup
M
étadonnées
M
ettre
en
beta
11. 11//
Publier une appli iOS
En réalité
Com
piler
le
code
Signer
U
pload
sur
le
store
Tada
!
Archiver
M
ettre
à
jour
le
w
ording
Récupérer
la
dernière
version
du
code
Re-signer
Fichiers
de
sym
bolisation
Soum
ettre
à
vérification
Préparer
le
w
orkspace
Augm
enter
le
num
éro
de
version
U
pload
pour
backup
M
étadonnées
M
ettre
en
beta
12. 12//
Publier une appli Android
En réalité
Com
piler
le
code
Signer
U
pload
sur
le
store
Tada
!
Archiver
M
ettre
à
jour
le
w
ording
Récupérer
la
dernière
version
du
code
Re-signer
Fichiers
de
sym
bolisation
Préparer
le
w
orkspace
Augm
enter
le
num
éro
de
version
U
pload
pour
backup
M
étadonnées
M
ettre
en
beta
13. 13//
Le gros problème là dedans
“C’est plus facile à dire qu’à faire”
● A la moindre erreur, on recommence
● C’est looooooong !
● Le stagiaire ne fournit pas de logs
● Une option peut tout changer
Une conviction
il ne faut pas faire confiance à un humain pour
un travail de robot
15. 15//
Qu’est ce que Fastlane ?
Votre vie va changer
● projet open-source, racheté par Twitter (Fabric)
● série d’outils pour publier des applis iOS et Android
● actions publiques ou privées
● beaucoup d’intégrations : Hockey App, Amazon S3,
TestFlight...
● projet en Ruby
17. 17//
C’est parti default_platform :ios
platform :ios do
before_all do
# ENV["SLACK_URL"] =
"https://hooks.slack.com/services/..."
cocoapods
# carthage
end
desc "Submit a new Beta Build to Apple TestFlight"
desc "This will also make sure the profile is up to
date"
lane :beta do
# match(type: "appstore")
gym(scheme: "MyApp")
pilot
# sh "your_script.sh"
# You can also use other beta
testing services here (run `fastlane
actions`)
end
Création du Fastfile
18. 18//
C’est parti !
Zoom sur le Fastfile
lane :beta do |options|
recolor_icon
sh "./customScript.sh"
gym(scheme: "MyApp",
workspace: "MyApp.xcworkspace",
include_bitcode: true)
testflight(options[:external])
slack
end
19. 19//
C’est parti !
Quelques commandes
Builder son appli en beta
$ fastlane beta
Envoyer son appli sur le store
$ fastlane release
En savoir plus sur une action
$ fastlane action slack
21. 21//
Actions Fastlane principales
La base - pour iOS
gym : builder l’application
match : centraliser les certificats et mobile provision
sigh : signer l’appli
cert : créer les certificats
pem : générer et maintenir les certificats de push
snapshot : screenshot automatiques
frameit : incruster les screenshot dans des téléphones
deliver : upload des métadonnées
produce : créer des applis sur iTunes Connect
precheck : pré-vérification pour faciliter la review de l’App Store
scan : exécuter des tests
24. 25//
C’est parti !
Quelques unes de nos commandes
$ fastlane store env:distrib target:myCANAL deploy:true
la lane à lancer
store / beta / inhouse / dev
25. 26//
C’est parti !
Quelques unes de nos commandes
$ fastlane store env:distrib target:myCANAL deploy:true
l’environnement
dev / preprod / prod / distrib
26. 27//
C’est parti !
Quelques unes de nos commandes
$ fastlane store env:distrib target:myCANAL deploy:true
la/les target
séparés par des virgules ou all
31. 32//
Snapshot + Frameit
● Captures d'écran dans plusieurs langues
● sur plusieurs devices
● de plusieurs écrans
● insérés dans un iPhone
● mis sur un fond avec un titre
je n’ai pas ouvert 1 simulateur ou Photoshop
Quelques commandes
39. 40//
Améliorer encore l’intégration
Plus vite, plus fort, plus pratique
Tests automatisés
● tests unitaires
● tests d’UI
● tests end-to-end
à adapter en fonction des commits
● commit “lambda”
● commit de merge
● commit de release
40. 41//
Améliorer encore l’intégration
Plus vite, plus fort, plus pratique
Améliorer les interfaces
● rendre les interfaces plus user-friendly
● ouvrir l’interface à nos clients
Augmenter la fréquence
● faire des build à intervalles réguliers
● facilite la recette
42. 43//
Retours d’expérience
Après 2 ans
Des sujets qui font peur...
c’est vécu comme un calvaire
… alors qu’en fait !
une fois un projet configuré, le bénéfice est réel !
On est passé par de nombreux ateliers
d’accompagnement.
43. 44//
Retours d’expérience
Après 2 ans
La barrière n’est pas l’appétence technique...
...c’est plutôt la nécessité qui prime.
● 10 applications par livraison
● sur 1 à 3 environnements en même temps
● avec une appli qui met 30 minutes à compiler
ça motive !
44. 45//
Retours d’expérience
Après 2 ans
Nécessite quand même une infrastructure
robuste
● 17 serveurs
● 3500 builds/jour
● 25 développeurs et 10 CDP
45. 46//
● s’adapte à vos process
● prêt pour
l’industrialisation
GO
● s’épargner la basse
besogne
● plus d’applis de test
● moins de stress lors
de la mise en prod
DÉVELOPPEUR SEUL,
PETITE ÉQUIPE
ÉQUIPE IMPORTANTE,
MULTI-PROJETS