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:
- Installieren und konfigurieren Sie das Java JDK
- Installieren und konfigurieren Sie das Android SDK
- Festlegen eines separaten Gradles für das Debuggen
- Vorbereiten eines Android-Projekts
- Installieren Sie TeamCity Server und Build Agent
- Einrichten von TeamCity Project → Build für die Projekterstellung und Abrufen der Installations-APK
- Konfigurieren Sie Build-Schritte mit UI-Autotests
Hauptteil
1. Installieren und Konfigurieren von Java JDKEntgegen der weit verbreiteten Meinung, die neueste Version von Java zu installieren, veröffentlicht JetBrains auf seiner offiziellen Website die empfohlene Version des Java SDK: linkInstalliert die empfohlene Version: linkInstalliert 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 SDKWir 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: linkInstallieren 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 Gradleist 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\.gradle
Weitere 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-Projekts4.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: Wirgradlew 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: Dieadb 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 AgentIch 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 → ErstellenIn 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 RootsAlles 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-KonfigurationFü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-Aufgabenclean build assembleDebug --no-daemon
Folgendes 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 Wirhaben 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_FILES
mit 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: Aufadb 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.