CI TeamCity - Automatisation des processus de construction de tests Android et UI

Dans cet article, je porte à votre attention les instructions d'installation et de configuration de TeamCity pour automatiser l'assemblage et les tests de projets Android sous Windows.

Je prêterai également attention aux caractéristiques de la configuration de l'environnement pour le projet Android (que j'ai trouvé dans le processus de recherche) et à divers types de choses qui peuvent aider à faciliter la vie du testeur et développeur novice.

Objectifs:


Lors de la mise à jour du code du projet, les événements suivants doivent se produire:

  • Projet de construction automatique
  • Exécuter les autotests de l'interface utilisateur
  • Exportation des fichiers APK de débogage et de libération pour les tests manuels ultérieurs
  • Informer tous les membres de l'équipe de développement des résultats

Plan:


  1. Installer et configurer le JDK Java
  2. Installer et configurer le SDK Android
  3. Définition d'un gradle distinct pour le débogage
  4. Préparer un projet Android
  5. Installer TeamCity Server et Build Agent
  6. Configuration de TeamCity Project → Build pour la construction du projet et obtention de l'installation APK
  7. Configurer les étapes de construction avec les autotests de l'interface utilisateur

Partie principale


1. Installation et configuration de Java JDK

Contrairement à la croyance populaire concernant l'installation de la dernière version de Java, JetBrains publie sur son site officiel la version recommandée du SDK Java: lien

Installe la version recommandée: lien

Installez également les variables d'environnement:

  • JAVA_HOME- chemin vers le dossier avec SKD Java pour utiliser CI.

    Exemple:

    C:\Java\jdk1.8.0_181
    Mieux vaut mettre des variables système.
  • Chemin - chemin d'accès au dossier avec Java SKD à utiliser à partir de la ligne de commande.

    Exemple:

    C:\Java\jdk1.8.0_181\bin
    Mieux vaut mettre des variables utilisateur.

Nous vérifions l'installation:

Dans le CMD dans n'importe quel répertoire que nous entrons: java -version

Java doit répondre que c'est:



2. Installer et configurer le SDK Android

Nous n'installerons pas les outils du SDK Android séparément. Android a interdit de créer des projets à partir de la ligne de commande. Il sera également plus pratique de déboguer les erreurs possibles si nous installons immédiatement Android Studio.

Installez la dernière version: lien

Installez également les variables d'environnement:

ANDROID_HOME
Exemple: C:\Users\1\AppData\Local\Android\Sdk

ANDROID_AVD_HOME
Exemple: C:\Users\1\.android\avd

Chemin:

Exemple: C:\Users\1\AppData\Local\Android\Sdk\platform-tools\- lancez les utilitaires à partir de la console par nous et CI.

Vérifiez: tapez CMD: adb --help

Obtenez des informations sur la version actuelle et les commandes disponibles:



Chemin:

Exemple: C:\Users\1\AppData\Local\Android\Sdk\emulator\- démarrez l'émulateur à partir de la console par nous et CI.

Vérifiez: nous tapons CMD emulator -version

Nous obtenons des informations sur la version actuelle:



3. Installation de Gradle Gradle

est inclus dans Android Studio, mais nous en mettrons un autre pour le débogage depuis la console.

La version n'est pas importante, car il est supposé que le projet sera lancé via le wrapper Gradle.

Je suggère d'installer une version similaire à celle utilisée dans le projet, par exemple Gradle 3.3. Lien .

Nous installons également des variables d'environnement:

GRADLE_HOME- il n'y a pas besoin, car CI utilisera Gradle Android Studio.

GRADLE_USER_HOME

Exemple: c:/gradle-cache

réel pour Windows Server, as sans lui, lors de l'assemblage du projet, toutes les bibliothèques Gradle téléchargées seront stockées dansC:\Windows\System32\config\systemprofile\.gradleCI ne pourra plus accéder à ces fichiers.

Chemin:

C:\Gradle\gradle-3.3\bin- le chemin vers le dossier Gradle pour une utilisation pratique à partir de la ligne de commande.

Vérifiez: nous tapons CMD gradle -v

Nous recevons des informations sur la version actuelle:



4. Préparation du projet Android

4.1. Créez un projet de test dans Android Studio.

Tapez Activité - Activité de navigation inférieure. Il vous sera utile plus tard pour créer un test d'interface utilisateur.

4.2. Désactivez Gradle Daemon sur une base continue, afin que Gradle Daemon n'apparaisse pas dans CI:

Ajoutez le fichier gradle.properties:
add org.gradle.daemon=false

4.3. Nous ajoutons également au fichier .gitignore(à votre goût) afin que les fichiers supplémentaires ne soient pas laissés dans VCS. 4.4. Créez un fichier de clés (ou utilisez-en un existant) dans le dossier du projet. Lien .

.gradle
.idea
/build/
local.properties





4.5. Ajoutez des liens vers le magasin de clés à Gradle afin que nous puissions créer un APK à part entière.

Exemple:

android{  
    ... //  
    signingConfigs {
        release {
            storeFile file("keystorefile.jks") //        
            storePassword "Password" //  
            keyAlias "android" // keyAlias,     
            keyPassword "Password" //  APK
        }
    }

    ... //  
     buildTypes {
        release {
            ... //  
            signingConfig signingConfigs.release //  APK
        }
    }
} 

4.6. Pour tester la santé du système, nous allons assembler un nouveau projet à partir de la ligne de commande. Entrez dans CMD:

cd < >

Par exemple: C:\Users\1\Documents\GitHub\Command2

Accédez au projet.

Entrez: Nous

gradlew assembleDebug

attendons la fin du montage.

Si tout va bien, alors nous obtenons le résultat BUILD SUCCESSFUL.



Nous allons dans le dossier du projet: app\build\outputs\apk\debug

il contient un nouveau fichier APK qui peut être installé sur l'appareil et vérifier si tout fonctionne.

4.7. Nous vérifierons également si les outils SDK et le gestionnaire AVD sont lancés.

4.7.1. Lancez Android Studio et créez un émulateur. Vous pouvez bien sûr le créer sur la ligne de commande, mais nous avons le shell d'interface utilisateur installé, c'est un péché de ne pas l'utiliser.

Outils → Gestionnaire AVD:



la version SDK de l'émulateur créé doit être au moins aussi grande que notre projet SDK.

4.7.2. Création d'un émulateur. Vérifions son lancement depuis la console. Nous entrons sur la ligne de commande:

start /min emulator -avd < >

Exemple:

start /min emulator -avd Pixel_2_API_25

Notez que nous utilisons une fonction /minpour démarrer l'émulateur en arrière-plan. Sinon, il n'aurait pas permis d'entrer de nouvelles commandes dans le CMD.
L'appareil fonctionne:



4.7.3. Nous vérifions l'installation de l'APK collecté.

Nous entrons dans le CMD:

adb install <path_to_apk>

Exemple:

adb install C:\Users\1\Documents\GitHub\Command2\app\release\app-release.apk

avec succès:



4.7.4. Nous vérifions le lancement de l'APK installé.

On entre dans le CMD:

adb shell monkey -p < > -c android.intent.category.LAUNCHER 1

Exemple: L'

adb shell monkey -p com.panarik.command -c android.intent.category.LAUNCHER 1

application a démarré:



4.7.5. Nous téléchargeons le projet dans un référentiel distant, par exemple, sur GitHub. Vérifiez si le projet sera téléchargé:

Installez Git BASH (si nous utilisons Git VCS). Lien .

Nous clonons le projet à partir d'un référentiel distant. Entrez dans la console Git BASH:

git clone < .git>

Exemple:

git clone https://github.com/panarik/Command2.git

On voit le résultat. Le projet a été copié dans un dossier local:



Tout est prêt à installer et configurer TeamCity. Pourquoi faisons-nous des exercices avec la ligne de commande et n'installons-nous pas immédiatement TeamCity? Il sera beaucoup plus pratique de s'assurer à l'avance que le projet fonctionne, de sorte qu'à l'avenir, il sera plus facile de localiser les éventuels bogues au stade de la construction dans TeamCity.

5. Installation de TeamCity Server et de Build Agent

Je ne décrirai pas en détail le processus d'installation. Il est dans le guide officiel et de nombreuses autres sources. Port du serveur TeamCity Je propose de définir des paramètres non standard, afin qu'il soit plus difficile de calculer les analyses de port.

6. Configuration du projet TeamCity → Build

Dans les paramètres généraux, il vous suffit de définir le chemin vers la sortie APK:

Exemple:

app\build\outputs\apk\release\app-release.apk



6.1. Configuration des racines TeamCity VCS

Tout est standard. Dans notre projet, nous utilisons Git, donc nous le saisissons et un lien vers le référentiel distant. Exemple:

https://github.com/panarik/Command2.git



6.2. Configuration de construction TeamCity

Ajoutez une étape de construction, qui compilera le projet et affichera l'APK. Dans notre projet, nous utilisons Gradle.

Entrez dans le champ Tâches Gradle:

clean build assembleDebug --no-daemon(--no-daemon juste au cas où, et cela devrait fonctionner comme un indice du fichier que nous avons fait dans la section 4.2)



Cliquez sur Exécuter, nous obtenons l'APK.

7. Configuration des étapes de construction avec les autotests UI Nous sommes

arrivés à la partie la plus intéressante, à savoir le lancement automatique des tests UI.

Les étapes seront lancées à l'aide de fichiers .BAT. Il est beaucoup plus pratique d'écrire du code, de le modifier à la volée sans avoir à passer par TeamCity UI, etc.

7.1. Créez d'abord une étape de génération avec l'émulateur en cours d'exécution.

Vous pouvez créer l'URL de BATnik complètement, pour plus de commodité, j'ai créé Environnement dans TeamCity BAT_FILESavec le chemin d'accès au dossier avec BATniks: nous



écrivons le code de démarrage de l'émulateur dans le fichier.

Exemple:

start /min "emulator" /D "C:\Users\1\AppData\Local\Android\Sdk\emulator" emulator.exe -avd Pixel_2_API_25 -no-snapshot-save -no-boot-anim
Liste des commandes et paramètres sur un site externe : lien .

7.2. Créez une étape de génération avec une pause pendant le chargement de l'émulateur. Vous pouvez enregistrer immédiatement la première étape dans .BAT, mais ce sera plus clair.

Un exemple d'une telle équipe qui a espionné sur Internet:

adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done; input keyevent 82'

De l'interface utilisateur, cela ressemblera à ceci:



Liste de toutes les équipes sur le site externe : lien.

7.3. Exécutez le test.

Également à partir de la ligne de commande. Ici, tout est individuel.

Exemple de commande:

gradlew connectedDebugAndroidTest

7.4. Nous arrêtons l'émulateur.

Exemple de commande:

adb -s emulator-5554 emu kill

processus terminé.

Vous pouvez également télécharger le rapport dans une étape distincte. Par défaut, il est enregistré dans le dossier du projet.

Merci beaucoup pour votre attention!

Si quelqu'un a des conseils pour améliorer le code des étapes et des suggestions d'amélioration, je vous en serai très reconnaissant.

All Articles