Category Archives: Android

Azure DevOps : Solution tout-en-un pour développer vos application mobiles

Qu’il s’agisse de projets personnels ou professionnels, open-source ou privés, un développeur a besoin de différents outils pour construire une application de qualité :

  • Gestion de projet
  • Gestion du code source
  • Intégration continue
  • Déploiement continu

De nombreux éditeurs existent pour offrir les différents outils nécessaires aux développeurs. Mais généralement, un éditeur propose un outil spécialisé sur un domaine unique afin d’être le meilleur sur celui-ci. Mais comme nous l’avons évoqué ci-dessus, on voit qu’il existe à minima 4 domaines à couvrir pour gérer le cycle de vie complet du développement d’une application.

Sans représenter une liste exhaustive des éditeurs présents sur le marché, vous trouverez ci-dessous un aperçu des principaux outils spécialisés utilisés par les développeurs mobiles : CircleCI, Travis CITeamCityJenkins, BitriseFastlane, HockeyApp, AppCenter, BuddyBuild, Nevercode, Firebase, AWS.

Le principal problème des éditeurs spécialisés, est qu’il est nécessaire d’avoir recours à plusieurs d’entre eux et de les faire cohabiter, pour créer une usine de développement logiciel digne de ce nom.

Sans être insurmontable, j’ai longtemps moi-même utilisé le quatuor Jira + TeamCity + Bitrise + HockeyApp, c’est un travail pouvant être long et coûteux à mettre en place. Tout le monde n’a pas nécessairement de temps à consacrer à cela, surtout dans les petites structures (startups, TPE-PME…).

C’est pourquoi d’autres éditeurs, plus connus et avec plus de moyens que ceux spécialisés, fournissent des solutions qui couvrent (plus ou moins) les 4 domaines évoqués précédemment : GitHub, AtlassianGitLab, Azure DevOps.

Ayant eu l’occasion de travailler sur la plupart d’entre eux, mon choix s’oriente actuellement sur Azure DevOps pour les raisons que je vais rapidement résumer ci-dessous.

Une solution tout-en-un hébergée dans le Cloud

Comme évoqué en introduction, de nombreux outils sont nécessaires pour gérer l’intégralité du cycle de développement d’une application et Azure DevOps offre l’ensemble des briques nécessaires, le tout hébergé dans le Cloud ce qui n’engendre aucun travail d’installation et de maintenance pour vous, hormis la configuration pour coller à vos besoins en terme de sécurité par exemple.

Azure Boards

Cette fonctionnalité sera le coeur de votre projet puisque c’est elle qui vous permettra de gérer l’organisation, la planification, l’avancement et le traitement des bugs de vos applications, que vous fonctionniez en mode Agile ou non.

Azure Repos

Toute application a besoin de stocker son code source et de permettre aux développeurs de l’équipe de collaborer sur celui-ci. Cette fonctionnalité offre tous ce qui est nécessaire du stockage des fichiers à la gestion des branches en passant par les commentaires et le suivi lors de la relecture de code.

Azure Pipelines

Afin d’assurer la qualité et la déliverabilité rapide de vos applications, l’automatisation de certaines tâches (exécution de tests unitaires, création de packages, publication sur les stores…) doit être au coeur du processus de développement. C’est exactement ce qu’offre cette fonctionnalité à travers de nombreux connecteurs pour iOS, Android, Xamarin, etc…

Azure Test Plans

Si vous développez des sites web ou des applications de bureau, votre démarche qualité vous amènera certainemet à vouloir tester ceux-ci de manière automatisée. C’est à cela que servira cette fonctionnalité qui malheureusment ne couvre pas (du moins pour l’instant) les applications mobiles.

Si vous souhaitez tester l’interface graphique de vos applications mobiles, il faudra dans l’immédiat vous orientez vers Visual Studio AppCenter (successeur de HockeyApp), qui est le complément idéal à Azure DevOps puisque celui-ci fournit tous les connecteurs nécessaires à son intégration.

Azure Artifacts

Quand vous développez avec .NET Core, Node.js, Python, etc… vous voulez souvent partager votre code entre différentes applications et pour cela vous créez des packages de type NuGet, Maven, npm, etc… Cette fonctionnalité vous permet d’héberger ces packages et d’exposer un référentiel que toutes vos applications peuvent consulter pour utiliser votre code partagé entre toutes vos applications.

Malheureusement pour les applications mobiles natives (Objective-C, Swift, Java, Kotlin), cette fonctionnalité n’offre rien de particulier pour elles et il faudra continuer de se reposer sur les anciennes solutions telles que Swift Package Manager, Cocoapods ou Carthage sur iOS.

En revanche les autres technologies (Xamarin, React Native…) pourront tirer partie de cette fonctionnalité sans trop de soucis.

Gratuit pour les petits projets (même privés)

Quand on démarre un projet, qu’il soit personnel ou professionnel, l’équipe est généralement restreinte au début et avec des moyens limités, que ce soit en temps et/ou en argent.

Pouvoir bénéficier d’une plateforme rapide à mettre en oeuvre et gratuite est donc quelque chose de très utile au lancement d’un projet et c’est exactement ce qu’apporte Azure DevOps.

Différents plans de licences existent mais le premier nommé tout simplement Basic Plan, offre l’usage de tous les services de la plateforme gratuitement dans une certaine limite.

 

Les éléments majeurs à retenir des captures ci-dessus :

  • Gratuit pour les 5 premiers utilisateurs, 6$/mois/utilisateur au delà
  • Nombre illimité de repos Git (privés ou publics)
  • 1800mn/mois pour exécuter vos travaux CI / CD en mode Cloud
  • Hébergez chez vous 1 agent pour vos travaux CI / CD sans limite de minutes
  • 2 Go de stockage pour vos packages applicatifs sur Azure Artifacts

Lorsque l’on développe des applications mobiles, il est évidemment nécessaire de pouvoir bénéficier d’une CI / CD qui fonctionne sur macOS afin de pouvoir créer ses applications pour iOS.

Force est de constater que les solutions proposant des fonctions CI / CD gratuites tournant sur macOS dans le Cloud sont quasiment inexistantes et c’est là une des forces d’Azure Pipelines à travers lequel vous bénéficiez de cette possibilité, même si vous utilisez le Basic Plan.

Usine logicielle pour tous types de projets

Les développeurs d’applications mobiles ne travaillent pas tous sur les technologies natives poussées par Apple et Google, à savoir Objective-C / Swift sur iOS ou bien Java / Kotlin sur Android.

D’autres solutions telles que Xamarin, React Native, Flutter, etc… existent sur le marché et rencontrent un succès plus ou moins important. Et bien là aussi, Azure Pipelines apporte le support de ces typologies d’applications à travers des connecteurs fournis clés en main. Et quand le connecteur n’existe pas directement, il est possible de s’en sortir via l’utilisation de scripts shell ou bien en réalisant et proposant soit même un connecteur aux équipes de Microsoft.

Mais une application mobile a généralement besoin de webservices pour fonctionner et ceux-ci sont développés sur des environnements technologiques totalement différents : .NET Core, Java, Node.js, Go, Ruby on Rails, etc…

Azure Pipelines et Azure Artifacts proposent là aussi le support de ces environnements technologiques afin de pouvoir gérer l’ensemble des applications sur une seule et même plateforme. Plus besoin d’avoir différentes plateformes, et donc différentes compétences techniques, en fonction de la typologie du projet à gérer.

Conclusion

Le but n’était pas ici de vous faire un cours magistral sur ce qu’offre Azure DevOps, mais plus une présentation très succinte des différentes briques offertes et voir pourquoi cette solution peut (doit) être considérée pour gérer vos applications mobiles.

Si vous cherchez une solution tout-en-un couvrant la quasi intégralité du cycle de développement d’une application mobile et hébergée dans le Cloud, alors je ne peux que vous recommander de vous intéresser à cette plateforme qui vous offrira tout ce dont vous avez besoin.

Si en plus vous cherchez une plateforme pour gérer des projets open-source ou bien une équipe de taille réduite, comme lors du démarrage d’une start-up, là aussi vous trouverez probablement votre bonheur de par son modèle économique.

Cela ne signifie pas qu’il faille totalement abandonner les autres solutions du marché qui ont fait et font encore leurs preuves au quotidien, avec pour conséquence de devoir changer toutes vos habitudes de travail.

On voit d’ailleurs que de nombreux éditeurs tendent vers cette voie d’une plateforme tout-en-un puisque GitHub (racheté par Microsoft) s’est récemment doté de fonctionnalités de CI / CD via GitHub Actions (encore en version Beta à l’heure actuelle).

C’est également le cas d’Atlassian via sa suite très connue (Jira, Confluence, Bitbucket) qui propose des fonctionnalités CI / CD au travers de Bitbucket Pipelines, mais qui ne sont pas capables à l’heure actuelle, d’exécuter des choses sur macOS et donc impossible de gérer les applications iOS.