L'integration continue pour application mobile n'est pas un secret et ne doit pas forcément etre compliqué.
Voici ma presentaiton faite lors du meetup Development Mobile Cote d'Azur sur ce sujet.
Le but de cette présentation est d'expliquer ce qu'est l'intégration continue, pourquoi utiliser l'integration continue et enfin quels options sont disponible aujourd'hui.
2. TEXT
AGENDA - #DMCA_CI
‣ Qu'est ce que l'intégration continue?
‣ Pourquoi adopter un système d’intégration continue
‣ Quelques solution disponible aujourd’hui
‣ Conclusion
3. #DMCA_CI
QU’EST QUE L’INTÉGRATION CONTINUE
▸ Stockage dans un système de source control
▸ Intégration fréquente du code
▸ Automatisation des tests
▸ Automatisation de la build avec vérification
▸ Automatisation de la release de l’app
4. #DMCA_CI
HISTORIQUE
▸ Viens du monde de l’extreme programming
▸ Continue a évoluer avec la method agile
▸ A commencer juste comme un system de “continuous build”
▸ Teste, puis deployment on ensuite était rajouté
▸ D’abord “onsite” puis maintenant “hosted” ou virtualisée
6. POURQUOI
BENEFICES
▸ On sait que l’application est toujours “prête”
▸ Plus de liberté pour les dévelopeurs
▸ Plus de confiance dans l’équipe
▸ Meilleur qualité de l’application
▸ on se débarrasse du “merge hell”
▸ On sait ce qui est déployé en production
7. POURQUOI
INCONVÉNIENTS
▸ Un certain cout: mise en place et maintenance
▸ Demande un certaine rigueur de la part de l’equipe
▸ Demande d’adoption de plusieurs méthodologie (code review, git flow, unit
test et ses variantes)
▸ ralenti l’équipe dans un premier temps, mais l’équipe devient plus productive
assez rapidement
8. POURQUOI
CE QUE L’INTEGRATION CONTINUE NE RÉSOLU PAS
▸ Build breaks, mais ça peut aider :-)
▸ Les bugs
▸ Votre business model
10. COMMENT?
BONNES HABITUDE A PRENDRE
▸ GitFlow
▸ Pull requests et build on pull requests
▸ Êtres capable de build votre application depuis une nouvelle machine avec
une seul commande (ou un set de commande connu et documenté)
▸ Automatiser la création des screenshots pour la release aux stores
11. COMMENT?
QUELQUES OPTIONS D’INTÉGRATION CONTINUE
▸ Buddybuild
▸ BitRise.io
▸ Jenkins
▸ Plein d’autre solutions disponibles aujourd’hui, trouvez celle que vous préférez
12. COMMENT?
BUDDY BUILD
▸ Le plus facile a mettre en place (5 minutes montre en main)
▸ La moins flexible des solutions
▸ Fonctionalitées
▸ Intégration avec Github, bitBucket et GitLab (ou git en général)
▸ Déploiement continue et App delivery
▸ Crash report, instant replay, retour utilisateur
▸ Différentes build en fonction des branche, pull request, etc
20. GOODIES
QUELQUES GOODIES SUPPLÉMENTAIRES
▸ Gestion du build number automatique
▸ Notification par Slack, HipChat, email
▸ Configuration de build par branch
▸ Emploi du temps de build ou build a chaque push ou pull request
▸ Device variable, environment variable
▸ Intégration avec Jira, Github Issues, Bitbucket issues, etc
▸ Faites tourner vos script shell avant et/ou après la build
21. COMMENT?
BITRISE.IO
▸ Plus puissant, plus compliqué, orienté vers les developers
▸ Configuration initial facile (5 minutes montre en main)
▸ Bitrise peut aussi tourner en local ou dans un container docker
▸ Possible de debug la build en local avec la command line interface (CLI)
▸ Différentes build en fonction des branche, pull request, etc
▸ Possibilité de créer vos propres extension pour les partager ensuite
▸ Open source
29. GOODIES
QUELQUES GOODIES SUPPLÉMENTAIRES
▸ Plus d’une centaines de step pour configurer votre build
▸ Possibilité de créer vos propre script et d’installer des outils supplémentaire
pour la build
▸ Possibilité de combiné plusieurs workflow dans un workflow
▸ Build on push, pull or tags
▸ Variables d’environnements secrètes et non secrètes
30. COMMENT?
JENKINS
▸ Très puissant, plus compliqué, orienté vers les developers
▸ Open source
▸ Peut tourner sur une machine ou/et dans un environnement virtualisé
▸ Configuration initiale longue et compliquée
31. JENKINS
INSTALLATION
▸ Télécharger Jenkins de jenkins.io
▸ Il vous faut une machine pour faire tourner jenkins, et il faut s’y connaitre un
peu
▸ Dans le terminal java -jar jenkins.war
▸ Dans le navigateur: http://localhost:8080
▸ Suivre les instructions pour votre plateforme pour faire tourner Jenkins au
démarrage.
43. JENKINS
QUELQUES GOODIES SUPPLÉMENTAIRES
▸ Possiblité de build tout ce que vous voulez sur Jenkins (iOS, Android, web app,
Mac App, Windows app, etc)
▸ Faite tourner Jenkins dans un container docker pour pouvoir isoler votre build
et faire plusieurs build en meme temps
▸ Une instance Jenkins peut controller d’autres instances
▸ Possibilité de construire des builds très complexes
▸ Beaucoup de plugins disponibles
44. JENKINS
LES INCONVÉNIENTS
▸ Complexe à mettre en place (gérer les certificats de signing)
▸ Besoin d’une configuration complexe pour faire tourner le simulateur pour
iPhone
▸ Prevoir quelque jour de travail pour que ce soit bien configurer
▸ Besoin de maintenir l’environnement