CI TeamCity - Automatisierung von Build-Prozessen für Android- und UI-Tests

In diesem Artikel mache ich Sie auf Anweisungen zur Installation und Konfiguration von TeamCity aufmerksam, um das Zusammenstellen und Testen von Android-Projekten unter Windows zu automatisieren.

Ich werde auch auf die Funktionen zum Einrichten der Umgebung für das Android-Projekt (die ich im Forschungsprozess gefunden habe) und auf verschiedene Dinge achten, die dem unerfahrenen Tester und Entwickler das Leben erleichtern können.

Ziele:


Beim Aktualisieren des Projektcodes sollte Folgendes auftreten:

  • Projekt automatisch erstellen
  • Führen Sie UI-Autotests aus
  • Exportieren von Debug- und Release-APK-Dateien für nachfolgende manuelle Tests
  • Benachrichtigen Sie alle Mitglieder des Entwicklungsteams über die Ergebnisse

Planen:


  1. Installieren und konfigurieren Sie das Java JDK
  2. Installieren und konfigurieren Sie das Android SDK
  3. Festlegen eines separaten Gradles für das Debuggen
  4. Vorbereiten eines Android-Projekts
  5. Installieren Sie TeamCity Server und Build Agent
  6. Einrichten von TeamCity Project → Build für die Projekterstellung und Abrufen der Installations-APK
  7. Konfigurieren Sie Build-Schritte mit UI-Autotests

Hauptteil


1. Installieren und Konfigurieren von Java JDK

Entgegen der weit verbreiteten Meinung, die neueste Version von Java zu installieren, veröffentlicht JetBrains auf seiner offiziellen Website die empfohlene Version des Java SDK: link

Installiert die empfohlene Version: link

Installiert auch Umgebungsvariablen:

  • JAVA_HOME- Pfad zum Ordner mit SKD Java für die Verwendung von CI.

    Beispiel:

    C:\Java\jdk1.8.0_181
    Besser Systemvariablen eingeben.
  • Pfad - Pfad zum Ordner mit Java SKD zur Verwendung über die Befehlszeile.

    Beispiel:

    C:\Java\jdk1.8.0_181\bin
    Besser Benutzervariablen eingeben.

Wir überprüfen die Installation:

In der CMD in einem beliebigen Verzeichnis, das wir eingeben: java -version

Java sollte antworten, dass es sich um Folgendes handelt:



2. Installieren und Konfigurieren des Android SDK

Wir werden die Android SDK-Tools nicht separat installieren. Android hat verboten, Projekte über die Befehlszeile zu erstellen. Es ist auch bequemer, mögliche Fehler zu debuggen, wenn wir Android Studio sofort installieren.

Installieren Sie die neueste Version: link

Installieren Sie auch Umgebungsvariablen:

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

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

Pfad:

Beispiel: C:\Users\1\AppData\Local\Android\Sdk\platform-tools\- Starten Sie die Dienstprogramme von uns und CI über die Konsole.

Überprüfen Sie: Geben adb --help

Sie CMD ein: Informationen zur aktuellen Version und den verfügbaren Befehlen abrufen:



Pfad:

Beispiel: C:\Users\1\AppData\Local\Android\Sdk\emulator\- Starten Sie den Emulator von uns und CI aus über die Konsole.

Überprüfen Sie: Wir geben CMD ein. emulator -version

Wir erhalten Informationen zur aktuellen Version:



3. Gradle-Installation Gradle

ist in Android Studio enthalten, aber wir werden ein weiteres für das Debug von der Konsole aus einfügen.

Die Version ist nicht wichtig, weil Es wird davon ausgegangen, dass das Projekt über den Gradle-Wrapper gestartet wird.

Ich schlage vor, eine ähnliche Version wie im Projekt zu installieren, z. B. Gradle 3.3. Link .

Wir installieren auch Umgebungsvariablen:

GRADLE_HOME- Es besteht keine Notwendigkeit, weil CI wird Gradle Android Studio verwenden.

GRADLE_USER_HOME

Beispiel: c:/gradle-cache

Tatsächlich für Windows Server, as Ohne sie werden während der Montage des Projekts alle heruntergeladenen Gradle-Bibliotheken in gespeichertC:\Windows\System32\config\systemprofile\.gradleWeitere CI können nicht auf diese Dateien zugreifen.

Pfad:

C:\Gradle\gradle-3.3\bin- Der Pfad zum Gradle-Ordner zur bequemen Verwendung über die Befehlszeile.

Check: Wir geben CMD ein gradle -v

Wir erhalten Informationen zur aktuellen Version:



4. Vorbereitung des Android-Projekts

4.1. Erstellen Sie ein Testprojekt in Android Studio.

Typ Aktivität - Untere Navigationsaktivität. Es wird später nützlich sein, um einen UI-Test zu erstellen.

4.2. Deaktivieren Sie Gradle Daemon fortlaufend, damit Gradle Daemon nicht in CI erscheint:

In Datei gradle.properties:
add org.gradle.daemon=false

4.3 hinzufügen. Wir ergänzen die Datei auch .gitignore(nach Ihrem Geschmack), damit keine zusätzlichen Dateien in VCS verbleiben. 4.4. Erstellen Sie einen Keystore (oder verwenden Sie einen vorhandenen) im Projektordner. Link .

.gradle
.idea
/build/
local.properties





4.5. Fügen Sie Links zum Keystore zu Gradle hinzu, damit wir eine vollwertige APK erstellen können.

Beispiel:

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

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

4.6. Um den Zustand des Systems zu testen, werden wir über die Befehlszeile ein neues Projekt zusammenstellen. Geben Sie CMD ein:

cd < >

Zum Beispiel: C:\Users\1\Documents\GitHub\Command2

Gehen Sie zum Projekt.

Enter: Wir

gradlew assembleDebug

warten auf den Abschluss der Montage.

Wenn alles in Ordnung ist, erhalten wir das Ergebnis BUILD SUCCESSFUL.



Wir gehen zum Projektordner: app\build\outputs\apk\debug

Er enthält eine neue APK-Datei, die auf dem Gerät installiert werden kann, und prüft, ob alles funktioniert.

4.7. Wir werden auch prüfen, ob die SDK-Tools und der AVD-Manager gestartet sind.

4.7.1. Starten Sie Android Studio und erstellen Sie einen Emulator. Sie können es natürlich in der Befehlszeile erstellen, aber wir haben die installierte UI-Shell. Es ist eine Sünde, sie nicht zu verwenden.

Tools → AVD Manager:



Die SDK-Version des erstellten Emulators muss mindestens so groß sein wie unser SDK-Projekt.

4.7.2. Emulator erstellt. Lassen Sie uns den Start von der Konsole aus überprüfen. Wir geben über die Befehlszeile ein:

start /min emulator -avd < >

Beispiel:

start /min emulator -avd Pixel_2_API_25

Beachten Sie, dass wir eine Funktion verwenden /min, um den Emulator im Hintergrund zu starten. Andernfalls hätte er keine neuen Befehle in die CMD eingeben dürfen.
Das Gerät läuft:



4.7.3. Wir überprüfen die Installation der gesammelten APK.

Wir geben in die CMD ein:

adb install <path_to_apk>

Beispiel:

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

Erfolgreich:



4.7.4. Wir überprüfen den Start der installierten APK.

Wir geben die CMD ein:

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

Beispiel: Die

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

Anwendung wurde gestartet:



4.7.5. Wir laden das Projekt in ein Remote-Repository hoch, beispielsweise auf GitHub. Überprüfen Sie, ob das Projekt heruntergeladen wird:

Installieren Sie Git BASH (wenn wir Git VCS verwenden). Link .

Wir klonen das Projekt von einem Remote-Repo. Geben Sie in die Konsole Git BASH ein:

git clone < .git>

Beispiel:

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

Wir sehen das Ergebnis. Das Projekt wurde in einen lokalen Ordner kopiert:



Alles ist bereit, TeamCity zu installieren und zu konfigurieren. Warum machen wir Übungen mit der Kommandozeile und installieren TeamCity nicht sofort. Es ist viel bequemer, im Voraus sicherzustellen, dass das Projekt funktioniert, damit es in Zukunft einfacher sein wird, mögliche Fehler in der Erstellungsphase in TeamCity zu lokalisieren.

5. Installieren von TeamCity Server und Build Agent

Ich werde den Installationsprozess nicht im Detail beschreiben. Er ist im offiziellen Führer und vielen anderen Quellen. TeamCity-Server-Port Ich schlage vor, Nicht-Standard-Port festzulegen, damit es schwieriger ist, Port-Scans zu berechnen.

6. TeamCity-Projekt konfigurieren → Erstellen

In den allgemeinen Einstellungen müssen Sie nur den Pfad zur APK-Ausgabe festlegen:

Beispiel:

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



6.1. Einrichten von TeamCity VCS Roots

Alles ist Standard. In unserem Projekt verwenden wir Git, also geben wir es ein und einen Link zum Remote-Repo. Beispiel:

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



6.2. TeamCity-Build-Konfiguration

Fügen Sie einen Build-Schritt hinzu, der das Projekt kompiliert und die APK anzeigt. In unserem Projekt verwenden wir Gradle.

Geben Sie in das Feld Gradle-Aufgaben

clean build assembleDebug --no-daemonFolgendes ein : (--no-daemon für alle Fälle, und dies sollte als Index für die Datei funktionieren, die wir in Abschnitt 4.2 erstellt haben.)



Klicken Sie auf Ausführen. Wir erhalten die APK.

7. Konfigurieren von Build-Schritten mit UI-Autotests Wir

haben den interessantesten Teil erreicht, nämlich den automatischen Start von UI-Tests.

Die Schritte werden mit .BAT-Dateien gestartet. Es ist viel bequemer, Code zu schreiben, ihn im laufenden Betrieb zu ändern, ohne die TeamCity-Benutzeroberfläche aufrufen zu müssen usw.

7.1. Erstellen Sie zunächst einen Build-Schritt bei laufendem Emulator.

Sie können die URL zum BATnik vollständig erstellen. Der Einfachheit halber habe ich die Umgebung in TeamCity BAT_FILESmit dem Pfad zum Ordner mit den BATs erstellt: Wir



schreiben den Emulator- Startcode in die Datei.

Beispiel:

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 der Befehle und Parameter an einem externen Standort: Link .

7.2. Erstellen Sie einen Erstellungsschritt mit einer Pause, während der Emulator geladen wird. Sie können den ersten Schritt sofort in .BAT registrieren, aber es wird klarer.

Ein Beispiel für ein solches Team, das das Internet ausspioniert hat: Auf

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

der Benutzeroberfläche sieht es folgendermaßen aus:



Liste aller Teams auf der Off-Site: Link.

7.3. Führen Sie den Test aus.

Auch über die Kommandozeile. Hier ist alles individuell.

Beispielbefehl:

gradlew connectedDebugAndroidTest

7.4. Wir stoppen den Emulator.

Beispielbefehl:

adb -s emulator-5554 emu kill

Prozess abgeschlossen.

Sie können den Bericht auch in einem separaten Schritt hochladen. Standardmäßig wird es im Projektordner gespeichert.

Vielen Dank für Ihre Aufmerksamkeit!

Wenn jemand Ratschläge zur Verbesserung des Codes für Schritte und Verbesserungsvorschläge hat, bin ich sehr dankbar.

All Articles