Nouveau: Nous venons de publier un nouvel ebook: le Guide de démarrage Jenkins, qui contient toutes les informations de cette série de quatre articles et plus. Rendez-vous sur notre page de ressources pour télécharger.
Si vous avez manqué nos deux premiers articles de cette série, ou si vous n’êtes pas sûr de ce qu’est Jenkins ou CI, revenez en arrière et lisez: Qu’est-ce que Jenkins et pourquoi devriez-vous l’utiliser?
Ceci est un guide étape par étape pour configurer Jenkins pour créer et tester des applications Android. Dans cette démo, nous utiliserons un exemple d’application utilisant le SDK Bugfender dans Android. Vous voudrez évidemment utiliser votre propre application ou bibliothèque Android construite. Les étapes pour ajouter votre propre projet Android à Jenkins seront les mêmes.
Création d’applications iOS? Gardez un œil sur le prochain article de cette série à venir.
Tout d’abord, vous devrez préparer la machine pour compiler et exécuter des applications Android. Si vous n’avez pas déjà installé Jenkins, vous pouvez suivre les étapes de l’article précédent pour installer Jenkins sur votre serveur.
- Configuration des versions de l’application Android dans Jenkins
- Étape 1: Installez Java JDK
- Étape 2: Installez le SDK Android
- Soyez un super-héros
- Étape 3: Configurez Jenkins
- Étape 4: Créez une tâche Android
- Étape 5: Téléchargement de votre code vers Jenkins
- Étape 6: Configuration des déclencheurs de génération Jenkins
- Étape 7: Build
- Commencez à corriger les bugs plus rapidement Maintenant gratuitement
- Accélérer Gradle (facultatif)
- Exécution de Tests unitaires
- Exécution de tests d’intégration
- Étapes suivantes
Configuration des versions de l’application Android dans Jenkins
Étape 1: Installez Java JDK
sudo apt-get install java-8-openjdk
Étape 2: Installez le SDK Android
Accédez à https://developer.android.com/studio/index.html#downloads et saisissez le lien répertorié dans le tableau pour Obtenir uniquement les outils de ligne de commande > Linux. Ne téléchargez rien, copiez simplement le lien.
sudo apt-get install unzip# here you paste the link you grabbed in the developer.android.com sitesudo -iu jenkins wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zipsudo -iu jenkins mkdir android-sdksudo -iu jenkins unzip sdk-tools-linux-3859397.zip -d android-sdk# this step is important to accept the Android SDK licenseyes |sudo -iu jenkins android-sdk/tools/bin/sdkmanager --licenses
Soyez un super-héros
Repoussez les bugs et protégez vos utilisateurs.
Utilisez Bugfender gratuitement dès aujourd’hui
Étape 3: Configurez Jenkins
Ensuite, connectez-vous à Jenkins et configurez le SDK Android que vous venez d’installer:
Ouvrez https://your-ci-server-name.com
sur votre navigateur. Vous verrez quelque chose comme ça:
- Allez dans Gérer Jenkins > Configurer le système
- Cochez « Variables d’environnement »
- Ajoutez un nom: ANDROID_HOME
- Ajoutez une valeur: /var/lib/jenkins/android-sdk
- Cliquez sur « Appliquer » puis sur « Enregistrer »
Étape 4: Créez une tâche Android
Revenez maintenant à la page d’accueil. Cliquez sur Nouvel élément. Entrez le nom de votre projet et sélectionnez « Projet Freestyle. »
Étape 5: Téléchargement de votre code vers Jenkins
Ensuite, vous devez ajouter un lien vers votre référentiel afin que Jenkins puisse télécharger votre code. Spécifiez l’URL Git de votre référentiel dans la section Gestion du code source. Comme mentionné, nous allons utiliser cet exemple de référentiel: https://github.com/bugfender/BugfenderSDK-android-sample.git.
Si vous avez un dépôt Mercurial ou Subversion, ils fonctionnent exactement de la même manière. Si vous avez un dépôt privé, vous pouvez également créer des clés SSH pour accéder à votre dépôt avec le protocole git.
Étape 6: Configuration des déclencheurs de génération Jenkins
Vous pouvez également spécifier des déclencheurs de génération qui créeront automatiquement le projet pour vous. Il est préférable d’utiliser un hook afin de déclencher automatiquement les builds lorsque quelqu’un pousse du code vers le référentiel.
Pour BitBucket, Gitlab et la plupart des fournisseurs Git, vous pouvez utiliser l’option « Trigger builds à distance ». Cela donnera une URL que vous pouvez configurer en tant que webhook dans votre fournisseur pour démarrer automatiquement une génération.
Pour les utilisateurs de GitHub, le plus simple est de trouver et d’installer le « plugin GitHub » (dans Manage Jenkins > Manage Plugins) et une option spécifique à GitHub apparaîtra. Cela installera le webhook pour vous.
Étape 7: Build
Une fois que vous avez le code source dans Jenkins, il est temps de construire. Si votre projet a un wrapper Gradle, c’est ce que vous devez utiliser. Dans notre cas, nous allons créer une étape de construction de script d’Invoke Gradle comme ceci:
Si vous avez un projet basé sur Ant, il existe également une étape de construction Invoke Ant ou, pour une flexibilité maximale, vous pouvez utiliser l’étape de construction du shell Execute.
Testez votre build en appuyant sur « Enregistrer »
Et c’est tout. Votre premier projet Android a été ajouté à Jenkins. Maintenant, vous pouvez envisager d’accélérer Gradle et de configurer des tests automatisés dans Jenkins.
Commencez à corriger les bugs plus rapidement Maintenant gratuitement
Bugfender est le meilleur enregistreur distant pour les applications mobiles.
S’inscrire
Accélérer Gradle (facultatif)
Si vous exécutez des builds basés sur Gradle, vous pouvez gagner du temps en exécutant Gradle en tant que démon. Pour le faire fonctionner, procédez comme suit:
mkdir -p /var/lib/jenkins/.gradleecho org.gradle.daemon=true | sudo -iu jenkins tee -a /var/lib/jenkins/.gradle/gradle.properties
Exécution de Tests unitaires
Si vous souhaitez exécuter des tests unitaires, vous pouvez le faire en ajoutant une autre étape de génération avec la tâche test Gradle, comme ceci:
Exécution de tests d’intégration
Pour configurer des tests d’interface utilisateur, vous devrez exécuter un émulateur. Même si Jenkins dispose d’un plugin d’émulateur Android, nous avons constaté qu’il n’a pas été mis à jour et ne fonctionne plus avec les dernières versions du SDK Android. Voici notre solution de contournement suggérée:
Étape 1: Téléchargez l’émulateur. Afin de répertorier les SDK disponibles, exécutez:
sudo -iu jenkins android-sdk/tools/bin/sdkmanager --list --verbose
Remarque rapide sur la sélection de l’image qui vous convient: les images basées sur x86 s’exécutent plus rapidement mais nécessitent également une accélération matérielle. Vous devrez peut-être activer l’accélération KVM (sudo modprobe kvm) sur votre serveur et votre serveur ne peut pas être une machine virtuelle. Pour cette raison, nous choisissons une image ARM, qui fonctionne plus lentement mais qui fonctionne.
Étape 2: Dans notre cas, nous cherchons à exécuter notre application sur le SDK Android de niveau 25, donc system-images; android-25; google_apis; armeabi-v7a semble approprié, alors nous l’installons de cette façon:
sudo -iu jenkins android-sdk/tools/bin/sdkmanager 'system-images;android-25;google_apis;armeabi-v7a'
Étape 3: Une fois installé, nous créons un appareil virtuel Android (une instance d’émulateur) avec lui:
echo no | $ANDROID_SDK_ROOT/tools/bin/avdmanager -v create avd --force --package 'system-images;android-25;google_apis;armeabi-v7a' --name Android25 --tag google_apis --abi armeabi-v7a
Étape 4: Ensuite, nous utilisons Supervisord pour exécuter l’émulateur Android en tant que service système, toujours en arrière-plan. Afin de l’installer:
sudo apt-get install supervisor
Ensuite, créez un fichier de configuration dans /etc/supervisor/conf.d/emulator.conf
:
command=/var/lib/jenkins/android-sdk/emulator/emulator -avd Android25 -no-window -noaudio -no-boot-anim -accel on -ports 5556,5557autostart=trueuser=jenkinsenvironment=ANDROID_SDK_ROOT=/var/lib/jenkins/android-sdk
Étape 5: Une fois cela fait, redémarrez supervisord pour appliquer les modifications:
sudo service supervisor restart
L’émulateur doit démarrer en arrière-plan. Cela peut prendre 1 à 2 minutes. Vous verrez le périphérique émulateur apparaître dans la liste des périphériques lorsqu’il est prêt:
sudo -iu jenkins android-sdk/platform-tools/adb devices
Étape 6 : Dans le travail Jenkins, ajoutez une étape de construction de shell d’exécution comme celle-ci:
Code:
ANDROID_SERIAL=emulator-5556# wait for emulator to be up and fully booted, unlock screen$ANDROID_HOME/platform-tools/adb wait-for-device shell 'while ]; do sleep 1; done; input keyevent 82'./gradlew connectedAndroidTest
Étapes suivantes
Il y a plus d’options comme l’exécution d’un émulateur Android, l’installation de l’application et l’exécution de divers tests dessus.
De plus, il existe des plugins vraiment intéressants avec lesquels vous pouvez jouer:
- Plugin d’émulateur Android — Pour le moment, ce plugin ne fonctionne pas correctement avec le dernier SDK Android. Mais notre meilleure hypothèse est qu’ils vont le réparer et que cela fonctionnera à nouveau bientôt. Comme alternative, vous pouvez utiliser une ancienne version du SDK.
- Plugin de signature Android
- Plugin Google Play Android Publisher
Pour plus de messages dans cette série, consultez:
- Qu’Est-Ce que Jenkins et Pourquoi Devriez-Vous L’Utiliser?
- Comment installer Jenkins dans Ubuntu
- Comment Ajouter votre Premier travail iOS à Jenkins