HockeyApp et Visual Studio Team Services au service de Xamarin
Après l’annonce, fin février 2016, du rachat de Xamarin par Microsoft, l’attente concernant des nouveautés ou changements vis à vis de Xamarin était forte au démarrage de la Build, il y a quelques jours.
Le mystère planait autour de l’avenir de Xamarin, et c’est lors de la deuxième keynote de l’évènement que la bonne nouvelle est tombée : Xamarin devient gratuit pour les utilisateurs de Visual Studio, mais il devient également open-source.
Après cette annonce fracassante qui ravira beaucoup de développeurs mobiles, et qui renforce la stratégie de Microsoft de poursuivre le chemin du cross-platform, plusieurs sessions autour de Xamarin ont été proposées. Dans cet article, nous nous intéresserons à l’intégration de Xamarin avec HockeyApp et Visual Studio Team Services, deux outils DevOps appartenant à Microsoft, permettant pour l’un une automatisation du build et des tests, pour l’autre le déploiement et le suivi facile des bêtas d’une application mobile.
Tout d’abord, ça veut dire quoi “mobile DevOps” ?
Histoire de lever l’ambiguïté sur l’expression “mobile DevOps”, cela regroupe, ici, les différents outils ou méthodes qui aideront les développeurs dans les différentes opérations de création d’une application mobile. Cela peut passer par la rationalisation du développement de l’application (par exemple, surveiller la santé de l’application en temps réel, répondre aux problèmes ou retours rapidement) ou encore par l’automatisation de processus dans le cursus de développement (par exemple, l’intégration et la livraison continues, etc.). Ici nous nous pencherons surtout sur la question de l’intégration et de la livraison continues.
Comment profiter de Visual Studio Team Services et Hockey App pour une application Xamarin ?
Visual Studio Team Services
Visual Studio Team Services, anciennement Team Foundation Service, est la plateforme de dépôt d’un projet dans le Cloud. Grâce à celle-ci, il est possible de très rapidement disposer de ses projets dans le Cloud en utilisant les IDE les plus connus, tels que Visual Studio, Eclipse ou Xcode. En effet, un grand nombre de types d’applications et langages sont supportés par la plateforme. Elle fournit non seulement un outil de contrôle de version (GIT ou Team Foundation Version Control), mais met aussi à disposition des outils agiles (backlogs, tableaux de tâches, suivi de work item), et surtout des agents de build sur le cloud, le support du build pour toutes les plateformes mobiles, ainsi que l’intégration avec les tests sur le cloud (tester une application sur un très grand nombre de périphériques mobiles, le tout disponible via le cloud). A noter cependant que l’offre Visual Studio Team Services n’est pas gratuite avec Xamarin iOS, le prix annoncé étant de 30$ par agent de build.
Comme expliqué précédemment, Visual Studio Team Services supporte tout type d’application mobile, qu’elle soit native ou non, et cela inclus bien sûr Xamarin.
La plateforme est simple d’utilisation et ergonomique : par exemple dès l’arrivée sur la page d’accueil, on peut rapidement voir la santé de l’application et autres indicateurs liés au projet.
Ensuite, dans l’onglet Build, il est possible de définir différentes étapes qui seront lancées lors du build de chaque projet. Dans l’étape de build de l’application, un certain nombre d’options ou configurations sont également disponibles, ce qui laisse beaucoup de possibilités aux contributeurs.
On peut si on le souhaite définir une étape de tests avec Xamarin Test Cloud après celle de build, afin de tester l’application buildée précédemment sur un ensemble de périphériques choisis. C’est un exemple parmi d’autres, car bien d’autres possibilités existent.
Cet élément du build dans Visual Studio Team Services, qui est englobé dans la notion d’intégration continue, peut résoudre une partie des problèmes qui peuvent survenir dans la vie d’une application, tels que l’échec de tests unitaires ou le crash de l’application. Cependant, ce n’est pas la seule partie à considérer pour réussir son application. En effet, les tests automatiques peuvent laisser échapper quelques cas de bugs, et même une application qui ne crashe pas peut ne pas correspondre à ce qui est attendu. C’est à ce moment-là qu’entre en jeu HockeyApp, qui va faire le lien avec les utilisateurs qui testent l’application à chaque nouveau build. C’est la partie de la livraison continue.
Kezaco HockeyApp ?
HockeyApp est un autre outil DevOps, sous la bannière Microsoft depuis bientôt deux ans. Cette plateforme regroupe différentes fonctionnalités qui contribuent à apporter de la qualité à une application mobile, telles que :
- La distribution de versions bêtas
- Le reporting des crashs
- Le regroupement des feedbacks
- La couverture des tests
Une des forces d’HockeyApp est d’être disponible pour la majorité des plateformes mobiles ou desktop et d’être compatible avec nombre de frameworks ou outils de développement mobile : Android, iOS, OS X, Windows, Cordova, React Native, Unity, et Xamarin. La plateforme dispose aussi d’un fonctionnement par équipes, qui permet de regrouper les utilisateurs de tests par groupe selon les besoins.
L’association d’HockeyApp à une application est optimisée pour le temps réel, car la plateforme envoie une notification de mise à jour à chaque nouveau build déployé, ce qui est très pratique à la fois pour les testeurs et les développeurs.
Les présentations faites, revenons à notre sujet et, pour cela, passons du côté du code. Pour intégrer HockeyApp à une application Xamarin, la méthode est simple : il faut tout d’abord ajouter le SDK au projet via Nuget, puis il faut ajouter quelques lignes de code pour configurer HockeyApp (notamment l’appID récupéré depuis la plateforme d’HockeyApp à la création de l’app et quels types d’exception seront renvoyées à HockeyApp). Une fois ces quelques étapes réalisées, l’application est prête pour utiliser, par exemple, le pistage d’évènements, qui se résume à une ligne de code ajoutée dans la méthode levée par l’événement, ou encore l’envoi de feedback via une gestuelle spécifique définie par le devéloppeur.
Afin d’automatiser l’envoi du package de l’application à chaque nouveau build, il faut retourner dans l’interface de Visual Studio Team Services, toujours dans l’onglet build, où on peut ajouter une nouvelle étape de build pour déployer l’application vers HockeyApp. Là encore, il faut remplir quelques lignes de configuration comme le nom de connexion à HockeyApp, le chemin vers le fichier du binaire, etc. Il reste ensuite à choisir si la mise à jour sera publique, obligatoire ou non, si on souhaite notifier les utilisateurs, ou encore décider quels utilisateurs/équipes pourront télécharger la nouvelle version.
Conclusion
Si finalement l’annonce majeure concernant Xamarin à la Build 2016 n’aura pas donné suite à des sessions sur des changements, Microsoft a proposé des sujets plus orienté DevOps. Il est en effet important de rappeler cet aspect aujourd’hui presque indéniable lors de la création d’un projet qui a pour but la qualité et la satisfaction des utilisateurs sur le long terme. Dans ce cadre, les outils HockeyApp et Visual Studio Team Services, tant couplés qu’utilisés séparément, se montrent pertinents, que ce soit pour une application Xamarin ou une application mobile prenant le parti d’une autre technologie.
HockeyApp et Visual Studio Team Services offrant nombre de configurations et fonctionnalités, il est fort possible qu’ils puissent être intégrés à vos projets mobiles et, cerise sur le gateau, cette intégration est simple.