Fastlane est un ensemble d'outils visant à automatiser le processus de publication sur iOS et à fournir un "processus complet de Déploiement Continu" qui peut être lancé par une simple commande.
Fastlane est une collection de scripts Ruby effectuant la plupart des tâches nécessaires lors de la soumission d'une nouvelle application iOS ou de sa mise à jour sur l'App Store :
- deliver peut envoyer le binaire, les screenshots et les meta-données de l'application sur l'App Store.
- snapshot automatise le processus de création de screenshots traduits de l'application sur tous les formats d'appareils.
- frameit ajoute les cadres des appareils autour des screenshots.
- PEM génère et renouvelle automatiquement vos profils de notification push.
- sigh permet de générer et télécharger votre profil de provisioning.
Cette collection permet l'intégration avec Jenkins et d'autres outils tierces comme CocoaPods ou xctool, et permet de définir plusieurs voies (lanes) de déploiement comme l'App Store, TestFlight Beta et testing.
Le workflow typique dans Fastlane ressemble à ceci :
lane :appstore do
increment_build_number
cocoapods
xctool
snapshot
sigh
deliver
frameit
sh "./customScript.sh"
slack
end
InfoQ a eu l'occasion de discuter avec son créateur, Felix Krause, pour en apprendre plus sur le projet.
Quel est le principal avantage du Déploiement Continu dans le processus de déploiement d'application iOS ? Comment cela s'inscrit dans le processus de revue d'Apple ?
Le principal avantage est de gagner beaucoup de temps à chaque publication d'une nouvelle application ou mise à jour. C'est une démarche que les développeurs iOS doivent faire eux-mêmes.
Quand j'ai commencé ce projet, je n'étais pas sûr de pouvoir automatiser tous les aspects du processus de publication, il n'y a aucune API publique sur laquelle se baser. Je suis content de pouvoir dire que ça marche et que j'ai déjà mis en place au sein d'entreprises des solutions de Déploiement Continu.
Pouvez-vous rapidement décrire le workflow typique avec Fastlane ? Quelles-sont les options les plus intéressantes ?
Je l'utilise pour les cas suivants :
- Lancer les tests (tests unitaires et tests d'intégration) à chaque commit.
- Créer uniquement les nouveaux screenshots pour les envoyer au client.
- Créer et distribuer une version Beta.
- Créer une application et l'envoyer sur l'App Store (ceci comprend le renouvellement du profil de provisioning, créer les nouveaux screenshots, envoyer le tout sur l'App Store et soumettre l'application).
Il y a quelques exemples sur http://fastlane.tools. Chaque développeur peut facilement ajouter ou supprimer des étapes ou créer les siennes.
Quel type d'organisation (ex : développeur indépendant, petit studio, entreprise, …) bénéficierait le plus de Fastlane selon vous ?
Au début, un développeur indépendant ou un petit studio : ils n'ont généralement aucune automatisation en place, il est donc facile de passer à Fastlane. Les entreprises ont généralement des outils d'Intégration Continue qu'elles vont devoir adapter pour utiliser Fastlane.
Que pouvez-vous nous dire sur l'adoption de Fastlane ? Une success story à partager ?
Je n'ai pas voulu ajouter d'outil d'analyse dans les gems mais j'ai tout de même quelques chiffres :
- Environ 20 000 installations pour les outils Fastlane.
- 10 000 visiteurs dans les 3 jours qui ont suivi son lancement.
- Les outils, individuellement, et Fastlane lui-même ont été dépôts du moment sur Github.
J'ai eu des retours d'entreprises connues qui ont intégré les outils Fastlane dans leur processus de publication. L'une des premières entreprises à m'en avoir parlé a été Panic.
Quel processus vous a amené à créer Fastlane ?
À l'origine, je l'ai créé pour un client, intégré dans leur système existant. Quand j'en ai parlé autour de moi, d'autres développeurs m'ont demandé s'ils pouvaient l'utiliser aussi. C'est ce qui m'a décidé à le développer et à le rendre flexible et documenté pour le partager avec les autres développeurs iOS.
Au début, j'ai développé uniquement deliver. J'ai ensuite réalisé que d'autres outils manquaient, ce qui m'a poussé à créer quatre autres outils (snapshot, frameit, PEM and sigh). Ces outils fonctionnent tous de façon individuelle et je voulais les connecter, c'est pour cela que j'ai créé Fastlane.
Les outils Fastlane sont open-source et peuvent être clônés sur GitHub. Pour plus d'information sur leur installation, configuration et utilisation, vous pouvez consulter le guide officiel.