Visual Studio Team Services : Compiler vos applications Android avec VSTS

Microsoft VSTSVous êtes accrocs à Team Foundation Server ou sa version Cloud « VSTS – Visual Studio Team Services » et vous avez maintenant une application Android à développer ? Microsoft répond présent et vous propose dans la dernière mouture de VSTS (anciennement Visual Studio Online – VSO) une chaîne d’intégration continue complète pour Android.

Etape par étape, voyons donc ensemble comment industrialiser le développement Android avec VSTS.

Visual Studio Team Services

VSTS vous permet gratuitement de pouvoir gérer votre de code source avec Git ou Team Foundation, et cela avec 5 contributeurs (très pratique pour les petits projets). Par ailleurs, VSTS vous permet aussi de gérer entièrement le projet, grâce au Dashboard, Backlog, outil de ticketing & reporting, etc. Dans ce billet, nous ne parlerons que de la partie industrialisation de la compilation.

Pour commencer, il faut vous rendre sur le site de VSTS afin de pouvoir activer votre évaluation gratuite.

La chaîne d’intégration continue

Aujourd’hui, l’utilisation d’une usine d’intégration continue que ce soit sur un Cloudbees, VSTS, Jenkins interne, nous paraît incontournable. En effet, il est important à chaque commit de vérifier si le build et notamment les tests unitaires ne soient pas cassés.
Dans le cadre d’un développement mobile, un autre intérêt est de pouvoir livrer à tout moment et de manière automatisée une version testable de l’application (et ce genre de chose est extrêmement appréciée par les testeurs et les utilisateurs).

Essayons maintenant de créer notre premier projet de build avec VSTS.

La création du projet

Lorsque vous êtes connectés à VSTS, vous avez la possibilité de créer un nouveau « Team Projet », soit depuis le dashboard, soit depuis le « Control Panel »

Create_Project

Nous devons renseigner le nom du projet, sa description, le process template, mais aussi le contrôleur de code source. Chose intéressante, nous pouvons choisir Team Foundation, mais l’intégration avec un Android Studio n’est pas forcément simple, en revanche si nous déroulons la liste on s’aperçoit que VSTS nous propose d’héberger un dépôt Git. Nous avons donc opté pour un Repository Git.

Sur votre poste (un Windows ou un Mac), clonez votre dépôt Git, créez votre projet Android.

Android_Project

Dans le cadre de l’article, j’ai opté pour un simple « Hello World ».

La build definition

Une fois notre projet créé, nous allons pouvoir nous attaquer à la partie processus de compilation (build definition). Pour cela, rendons-nous sur le portail de notre projet, dans l’onglet « Build ».
Et créez une nouvelle « Build definition ».

Create_BuildDefinition

Ici vous avez la possibilité de choisir parmi plusieurs modèles prêts à l’emploi. Mais nous remarquons que le template Android n’est pas présent.
Nous allons devoir utiliser un template vide que nous compléterons par la suite.

VSTS vous demande les informations concernant le contrôleur de code source à utiliser :

Create_BuildDefinition_01

Dans le cadre d’une chaîne d’intégration continue, nous avons la possibilité à cette étape de cocher la case « Continous integration : build each check-in ».

Les build tasks

Après avoir créé notre « Build Définition », nous allons nous intéresser à la création d’une task de build (tâche de compilation).

C’est à ce moment que cela devient intéressant. En effet, nous voyons que VSTS propose énormément de tasks qui vont nous faciliter la vie que ce soit pour le build, ou encore le test.

Create_BuildDefinition_AddTask

Nous allons choisir une task « Android Build ».

 

Paramètrage d’une task « Android Build »

Android_Build_Def

Ici nous devons renseigner l’emplacement de notre graddle.bat, l’emplacement du projet, et éventuellement les arguments à passer à Gradle lors de la compilation.

Android_Build_Def_Graddle

Autre chose intéressante, notamment pour l’exécution de tests unitaires, VSTS propose d’instancier un émulateur Android.

Android_Task_Emulator

Au moment où j’écris l’article, cette fonctionnalité n’est pas encore stable. Pour démarrer un émulateur, il ne faut pas mettre le nom de l’API dans « AVD Target SDK » mais l’ID du Target SDK qui se trouve dans VSTS. Pour connaître l’ID, vous devez ajouter une « Commande Line Task »:

VSTS_Build_CommandTask

Après l’exécution du build, vous aurez la liste des Targets avec leur ID respectif.

******************************************************************************
Starting task: Run C:\Program Files (x86)\Android\android-sdk\tools\android.bat
******************************************************************************

Executing the following commandline. (workingFolder = C:\a\1\s)
"C:\Program Files (x86)\Android\android-sdk\tools\android.bat" list target
Available Android targets:
----------
id: 1 or "android-19"
Name: Android 4.4.2
Type: Platform
API level: 19
Revision: 4
Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
Tag/ABIs : default/armeabi-v7a, default/x86
----------
id: 2 or "android-21"
Name: Android 5.0.1
Type: Platform
API level: 21
Revision: 2
Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
Tag/ABIs : no ABIs.
----------
id: 3 or "android-22"
Name: Android 5.1.1
Type: Platform
API level: 22
Revision: 2
Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
Tag/ABIs : no ABIs.
[...]

Une fois que vous avez correctement paramétré vos étapes de build, vous pourrez lancer la compilation :

Run_Build_Without_Emulator

Déploiement Hockey App

Lors d’un développement d’une application mobile, il est souvent nécessaire de déployer l’application sur un store privé.
L’étape de buid HockeyApp n’est pas présente par défaut, il faut aller cherche le plug-in dans le Marketplace Visual Studio. La bonne nouvelle est que le plug-in est gratuit.

Le plug-in HockeyApp est disponible directement à cette adresse : https://marketplace.visualstudio.com/items/ms.hockeyapp

Notre plug-in est désormais sélectionnable dans notre tâche de build.

Hockey_App_Add_Task

Nous pouvons l’ajouter et le configurer :

Hockey_App_Configure_Task

  • HockeyApp API Token : token que vous pouvez générer depuis votre console Hockey-App
  • App ID : Cet ID se trouve sur la home page de l’application
  • Binary File Path : l’emplacement de votre apk (par ex: {SomeFolder}\app\build\outputs\apk\app-debug.apk
  • Symbols File Path : L’emplacement du fichier mappings.txt (si toutefois celui est généré). Ce champ est optionnel
  • Publish : Permettre aux utilisateurs de télécharger l’application
  • Mandatory : Mise à jour obligatoire pour les users
  • Notify Users : Notifie les utilisateurs que la nouvelle version est disponible

Vous pouvez ensuite sauvegarder la tâche (pensez bien à la mettre à la toute fin du projet de build).
Si tout se passe bien, vous devriez voir apparaître votre application sur le portail HockeyApp.

Notre avis

L’outil est assez jeune, de ce fait il est encore un peu limité.
Si vous avez des Tests Unitaires à exécuter sur un émulateur Android, cela va devenir assez vite compliqué et coûteux. L’option de démarrer un émulateur, pour le moment ne fonctionne pas de manière immédiate comme sur Cloudbees. Le temps que cela soit corrigé, vous allez devoir provisionner une VM et y installer un émulateur Android, et faire tourner une VM sur Azure H/24 est assez onéreux.

En revanche, si vous n’avez pas besoin d’émulateur, vous pouvez mettre votre projet sans soucis sur VSTS. Cependant, nous vous conseillons d’abord de découvrir l’outil via de petits projets, ne commencez pas par migrer un projet complexe avec de nombreuses dépendances. En cas de problème il faudra se tourner vers le support Microsoft ou les différents forums d’entraide.

Côté prix, l’outil est gratuit jusqu’à 5 utilisateurs, ce qui peut vous permettre de vous faire rapidement une idée. La fiche tarifaire propose des prix mensuels par palier aux nombres d’utilisateurs.VSTS Prix

Conclusion

Visual Studio Team Services vous permet donc de créer votre chaîne d’intégration continue assez facilement avec des fonctionnalités similaires à ce que l’on retrouve par exemple sur Jenkins ou TFS (on-premises). Il est même possible de faire tourner un SonarQube (analyse qualimétrique du code source) depuis votre chaîne d’intégration.
De plus, cet outil vous permet de gérer entièrement le cycle de vie de votre projet (Application Lifecycle Management): de la spécification (backlog) jusqu’au déploiement (Release Management).
Cependant, de part sa jeunesse quelques fonctionnalités sont perfectibles (comme le lancement des tests dans l’émulateur Android)
L’avantage de la gratuité jusqu’à 5 utilisateurs vous permettra de tester le produit et de voir s’il peut répondre à vos besoins.

Alors, à vos builds !