Comment bien choisir sa CI/CD Mobile en 2019
Tags: mobile, ci, devops, android
Published: 2021-04-13 17:12:22


Intro : Quand on pense DevOps on pense souvent Cloud, Infra, Web, Backend, mais le monde du mobile a ses propres contraintes et ses propres outils. Nous allons voir quels sont les critères qui vont nous permettre de choisir la plateforme idéale.

Plusieurs questions viennent en tête au moment de choisir la meilleur plateforme, dont :

Est-ce que la solution répond à l’ensemble des mes besoins, combien ça va me coûter, quelles ressources seront nécessaires pour faire tourner le bouzin, combien de temps ça va faire gagner à mes équipes (ROI pour les businessmen), qui contacter en cas de pépin, comment assurer la pérennité de mon investissement et j’en passe.

On vous propose de répondre à ces questions via un Benchmark maison !

## Quelques bases

Pour commencer (parce qu’il faut bien commencer quelques part), qu’est-ce qu’on entend par CI/CD et par Mobile ?

*1 ) D’après Wikipédia, l’intégration continue est un ensemble de pratiques utilisées en génie logiciel consistant à vérifier à chaque modification de code source que le résultat des modifications ne produit pas de régression dans l’application développée.*

En résumé dans notre contexte, ca veut dire qu’on veut builder nos applications, vérifier que la qualité du code est bonne, que nos fonctionnalités sont utilisables via des tests automatisés et que l’on est capable de publier tout ça à nos utilisateurs automatiquement.

À date, les principales plateformes disponibles sont :

![](https://cdn-images-1.medium.com/max/2000/1*zQFd5DbnQvCXOgb5l7PSBw.png)

👇 Présentation des plateformes pour ceux qui ne les connaissent pas 👇
[**Top Mobile Continuous Integration (CI/CD) Tools | Instabug Blog**
*Discover the top continuous integration tools that help you speed up your development to deployment cycle and reduce…* instabug.com](https://instabug.com/blog/continuous-integration-tools/)

Dans leurs modes de fonctionnement on peut regrouper ces plateformes selon 3 catégories :

* **Packagés** : Bitrise, App Center, Codeship

* **Modulaires** : Travis CI, Circle CI

* **On-Premise** : Jenkins, Gitlab CI, TeamCity



*2) Mobile, toujours d’après Wikipédia, qualifie tout objet apte à se déplacer.*

Bon ça va pas nous aider… On va vous donner notre version ; par technologies mobiles on entend les principaux moyens de créer une application mobile à faire tourner sur vos précieux smartphones (du coup je parle pas de Windows Phone 😉).
> De nos jours, actuellement, en 2019, au jour d’aujourd’hui, ça veut dire : Android Natif, iOS Natif, Cordova (et bien souvent Ionic), React Native, Flutter, Xamarin à la limite, et point barre, le reste c’est ≤💩.

![](https://cdn-images-1.medium.com/max/3396/1*BQHHmekhBtR30cEGG3xRtQ.png)

*Notez que l’on a aussi besoin des outils qui les accompagnent, dont : XCode, le SDK Android, les différents frameworks que vous utilisez, plus les utilitaires dont vous pourriez avoir besoin (Git, Java, Gradle, Ruby, CocoaPods, etc…).*

Quelques chiffres sur le monde du mobile pour ceux que ca intéresse :
[**Ionic Framework - 2018 Developer Survey**
*Ionic is the app platform for web developers. Build amazing mobile, web, and desktop apps all with one shared code base…* ionicframework.com](https://ionicframework.com/survey/2018#results)

👉 Maintenant qu’on a dit ça, voyons comment affiner notre choix en fonction de nos besoins.

## Le “Qui est-ce” des plateformes d’intégration continue

![](https://cdn-images-1.medium.com/max/2000/0*9JsoC5uYjrBOfzY0)
> Est-ce qu’il est roux ? Non ? Ok je retire Gitlab CI.

Plus sérieusement, la première question à se poser est : **quelles sont les technologies que la plateforme doit supporter ?**

Rien de mieux qu’un bon vieux tableau comparatif pour représenter ça 🎯

⏩ Nous avons testé pour vous l’ensemble des plateformes, mais dans un soucis de temps de lecture nous allons passer directement aux conclusions ⏩

![Tableau de compatibilité Technologie / Plateforme](https://cdn-images-1.medium.com/max/4068/1*P-v4IOMbOTcECqRX5zIaLg.png)*Tableau de compatibilité Technologie / Plateforme*

⛔ Suite à notre analyse et comme le montre bien le tableau ci-dessus, il ressort d’emblée que *TeamCity* et *Codeship* ne sont pas du tout adaptés au monde du Mobile.

Ensuite, en considérant nos 4 critères de départ, plus le titre de cet article, on peut également dire que les plateformes **On-Premise** ne nous semblent pas adaptées. Non pas qu’elles ne soient pas performantes bien au contraire, nous en avons mises en place chez de nombreux clients et continuons à les utiliser, mais à moins que vous n’ayez un plateau de 20 développeurs, des budgets importants et des équipes dédiées à leur mise en place/administration/maintenance je ne pense pas que ces solutions soient faites pour vous (si c’est votre cas [contactez-nous](https://www.bewizyu.com/contact), on peut vous aider!).

Les **plus** 👍 du **On-Premise** :

* Comme leurs noms l’indique elles sont **“On-Premise”** ce qui par définition veut dire que vous pouvez les faire tourner directement chez vous. On retrouve souvent ce genre de besoin lorsqu’on a des problématiques de sécurité et de confidentialité des données (banque, assurance, etc…).

* Les 3 plateformes offrent une architecture master/slave qui permet de scaler votre infra et de monter en charge facilement

* Et enfin ces outils sont plus des **Orchestrateurs** que des plateformes de CI/CD donc pas directement liés à des langages ou à des outils. Ils disposent d’une grande communauté et proposent des adapteurs/plugins pour la plus part des outils dont vous pourriez avoir besoin, vous ne devriez donc pas être bridés dans leur utilisation

Les **moins** 👎 :

* La gestion de l’infrastructure est à votre charge, même si c’est un aspect positif pour certains cela représente un coût important autant en matériel qu’en ressources humaines. 
> Le fait de devoir gérer des applications iOS par exemple nécessite du matériel qui coûte cher. D’expérience un [Mac Mini](https://www.apple.com/fr/shop/buy-mac/mac-mini) est rarement suffisant donc il vous faudra regarder du côté des [Mac Pro](https://www.apple.com/fr/shop/buy-mac/mac-pro) : ticket d’entrée 3 300€ minimum

* En terme de Run ça vous fait un outil de plus à faire tourner et à administrer, ce qui entraine également des problèmes de gouvernance

* Spécificité de Gitlab CI, vous restez dans l’univers Gitlab, impossible de connecter une autre source de code (comme Github ou BitBucket par exemple)

Pour finir notre **“Qui est-ce?”**, Travis CI et Circle CI étant très similaires dans leur approche nous n’allons conserver que Travis CI pour la catégorie des outils **Modulaires**.
> # Bitrise, App Center et Travis CI sont donc les finalistes pour notre Benchmark !

## Benchmark : Le Podium final

![](https://cdn-images-1.medium.com/max/2000/1*XPNGkDsu1Kgn_BpVaGslCg.png)

On a fait 80% du boulot en répondant aux questions précédentes maintenant, comme le veut la [loi de Pareto](https://fr.wikipedia.org/wiki/Principe_de_Pareto), les ennuis commencent ! Pour simplifier je vous ai mis à disposition un repo Android pour faire un cas concret d’utilisation.

{% github RBonaventure/pot-pourri-android %}

Pour départager nos finalistes on a isolé 5 critères :

⚡ Plug & Play (Facilité de mise en place / d’utilisation / de maintenance)

🚀 Performances (scalabilité / vitesse d’execution / temps de build)

🔗 Interconnection avec vos outils préférés (Github/Gitlab/BitBucket, Slack, SonarQube, App Stores, etc…)

💬 Communauté (support / documentation / open-source)

💰 Prix (of course)


![Exemple : [https://app.bitrise.io/build/71dd94d903a7ee97#?tab=log](https://app.bitrise.io/build/71dd94d903a7ee97#?tab=log)](https://cdn-images-1.medium.com/max/2000/1*Wo960igzwChzq_wCG-Nc_A.png)*Exemple : [https://app.bitrise.io/build/71dd94d903a7ee97#?tab=log](https://app.bitrise.io/build/71dd94d903a7ee97#?tab=log)*

![](https://cdn-images-1.medium.com/max/2000/1*pDAsWm979ia4GbyOjc53Lg.png)

Plug & Play : L’interface web a quelques loupés mais ils proposent : détection automatique de la techno, stack customizable, interface de création de workflow en mode WYSIWYG, c’est top !

Performances : Temps de up des VM assez long, plus y’a de steps dans vos workflows plus c’est lent. C’est pas son point fort !

Interconnection : [180+ intégrations](https://www.bitrise.io/integrations/steps) open-source ! Possibilité d’écrire soit même ses scripts, les possibilités sont infinis !

Communauté : La communauté est grandissante et le support via le Chat est génial. Ils vont jusqu’à debugguer ton App ;-)

Prix : Premier prix : Free limité à 10mins de build, ensuite c’est fonction de la puissance des machines et du nombre de builds concurrents que vous voulez. Plus vous avez d’apps plus c’est salé ! Avec 100€/mois on commence vraiment à jouer
[**Bitrise - Pricing**
*Android, iOS & cross-platform mobile continuous integration / delivery, with 200+ integrations. Sign up and start…* www.bitrise.io](https://www.bitrise.io/pricing/teams)

![Exemple : Impossible de faire des pages publiques… DM pour que je vous ajoute sur ma Team ;-)](https://cdn-images-1.medium.com/max/2000/1*TkFO-J2CO8K5gEanO6ht0g.png)*Exemple : Impossible de faire des pages publiques… DM pour que je vous ajoute sur ma Team ;-)*

![](https://cdn-images-1.medium.com/max/2000/1*Ci693fDcLL8y5IH7WHapkg.png)

Plug & Play : l’intégration est assez simple par contre on ne peut quasiment rien customizer. Il faut que vos App soient standards de chez standards.

Performances : 3mins pour le build Android, c’est le grand gagnant, par contre on ne sait pas sur quelles machines tournent les builds. Impossible de choisir la stack d’execution à date (cf [Roadmap](https://github.com/Microsoft/appcenter/wiki/Roadmap)).

Interconnection : Microsoft Teams, Slack, et c’est tout 🙀

Communauté : le produit est assez peu utilisé et il n’existe pas de support à part des [Github issues](https://github.com/Microsoft/appcenter/issues)

Prix : Gratuit dans la limite de 240mins de build/mois puis 40$/concurrence
[**Visual Studio App Center Pricing | Visual Studio**
*We've made App Center available for all Our generous free tier enables you to ship 5-star, higher-quality iOS, Android…* visualstudio.microsoft.com](https://visualstudio.microsoft.com/app-center/pricing/)

![Exemple : [https://travis-ci.org/RBonaventure/pot-pourri-android/builds/560017254](https://travis-ci.org/RBonaventure/pot-pourri-android/builds/560017254)](https://cdn-images-1.medium.com/max/2000/1*AZaDKb_TleapHnePTRGSvw.png)*Exemple : [https://travis-ci.org/RBonaventure/pot-pourri-android/builds/560017254](https://travis-ci.org/RBonaventure/pot-pourri-android/builds/560017254)*

![](https://cdn-images-1.medium.com/max/2000/1*lu-EWMeHoI2odHXrbvi7kA.png)

Plug & Play : Des stacks dédiées au mobile existent et la plupart des paramètres spécifiques sont customizables. Très flexible mais pas vraiment simple à mettre en place dès qu’on veut faire des choses un peu avancées (publication sur les stores par exemple). YAML de mon POC [ici](https://gist.github.com/RBonaventure/af12593742ef5a38c1e9aa38d13cb58b).

Performances : 4mins de build. Plutôt bien. Possibilité de fournir ses propres images Docker pour les Builds. Possibilité de jouer des jobs en parallèle. Même si l[es VM peuvent être un peu longue à boot](https://docs.travis-ci.com/user/reference/overview/#virtualisation-environment-vs-operating-system).

Interconnection : [Une liste d’add-ons](https://docs.travis-ci.com/user/apps/) est proposée mais à part SonarCloud je n’ai pas trouvé grand chose d’intéressant…

Communauté : Il existe un forum dans lequel vous pouvez créer des tickets de demande d’aide mais ça ne va pas plus loin !

Prix : Gratuit pour les projets Open-Source ! Sinon toujours le même principe de builds concurrents. Premier pix 69$/mois.
[**Travis CI - Pricing**
*Edit description* travis-ci.com](https://travis-ci.com/plans)

## Conclusion

Comment bien choisir sa CI/CD Mobile en 2019 ?

La première réponse : Ce n’est pas à moi de vous dire quelle solution choisir.

La réponse de Normand : Ça dépend de vos besoins et de vos moyens.

La réponse terre à terre : pour un contrôle total de votre outil préférez Jenkins (ou Gitlab CI si votre entreprise utilise déjà Gitlab). Si vous voulez mutualiser votre CI avec du Web ou du Back un outil comme TravisCI ou CircleCI répondra surement à la plupart de vos besoins. Et enfin si vous voulez juste appuyer sur des boutons et utiliser des connecteurs tout faits mieux vaut partir sur Bitrise, ou App Center si vous êtes déjà chez Microsoft !

La réponse D : personnellement je ne peux plus me passer de la fléxibilité de Bitrise ! De plus ils connaissent une forte croissance et un taux d’adoption énorme sur les plus gros plateaux de Dév mobile et viennent [de lever 20M](https://blog.bitrise.io/series-b-funding).

*Besoin d’un accompagnement sur mesure, faites appel à nous !*
[**BEWIZYU**
*Développement, expertise sur plateformes à usage mobile* www.bewizyu.com](https://bewizyu.com/make/digital-factory/application-mobile/)