CI TeamCity - Automatización de procesos de compilación de pruebas de Android y UI

En este artículo, traigo a su atención las instrucciones para instalar y configurar TeamCity para automatizar el ensamblaje y las pruebas de proyectos de Android en Windows.

También prestaré atención a las características de configuración del entorno para el proyecto de Android (que encontré en el proceso de investigación) y a varios tipos de cosas que pueden ayudar a facilitarle la vida al probador y desarrollador novato.

Objetivos:


Al actualizar el código del proyecto, debe ocurrir lo siguiente:

  • Proyecto de construcción automática
  • Ejecutar pruebas automáticas de la interfaz de usuario
  • Exportar depuración y lanzamiento de archivos APK para pruebas manuales posteriores
  • Notificar a todos los miembros del equipo de desarrollo de los resultados.

Plan:


  1. Instalar y configurar Java JDK
  2. Instalar y configurar Android SDK
  3. Establecer un gradle separado para la depuración
  4. Preparando un proyecto de Android
  5. Instalar TeamCity Server y Build Agent
  6. Configurar TeamCity Project → Compilar para la compilación del proyecto y obtener la APK de instalación
  7. Configure los pasos de compilación con las pruebas automáticas de IU

Parte principal


1. Instalación y configuración de Java JDK

Contrariamente a la creencia popular sobre la instalación de la última versión de Java, JetBrains en su sitio web oficial publica la versión recomendada del SDK de Java: enlace

Instala la versión recomendada: enlace

También instale Variables de entorno:

  • JAVA_HOME- ruta a la carpeta con SKD Java para usar CI.

    Ejemplo:

    C:\Java\jdk1.8.0_181
    Mejor poner en variables del sistema.
  • Ruta: ruta a la carpeta con Java SKD para usar desde la línea de comandos.

    Ejemplo:

    C:\Java\jdk1.8.0_181\bin
    mejor poner en variables de usuario.

Verificamos la instalación:

en el CMD en cualquier directorio, ingrese: java -version

Java debería responder que es:



2. Instalar y configurar el SDK de Android

No instalaremos las herramientas del SDK de Android por separado. Android ha prohibido crear proyectos desde la línea de comandos. También será más conveniente depurar posibles errores si instalamos Android Studio de inmediato.

Instale la última versión: enlace

También instale Variables de entorno:

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

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

Ruta:

Ejemplo: C:\Users\1\AppData\Local\Android\Sdk\platform-tools\- inicie las utilidades desde la consola por nosotros y CI.

Comprobar: escriba CMD: adb --help

obtenga información sobre la versión actual y los comandos disponibles:



Ruta:

Ejemplo: C:\Users\1\AppData\Local\Android\Sdk\emulator\- Inicie el emulador desde la consola por nosotros y CI.

Comprobación: escribimos CMD emulator -version

Obtenemos información sobre la versión actual:



3. Instalación de Gradle Gradle

está incluido en Android Studio, pero colocaremos otro para la depuración desde la consola.

La versión no es importante, porque se supone que el proyecto se lanzará a través del contenedor Gradle.

Sugiero instalar una versión similar a la utilizada en el proyecto, por ejemplo Gradle 3.3. Enlace .

También instalamos Variables de entorno:

GRADLE_HOME- no hay necesidad, porque CI usará Gradle Android Studio.

GRADLE_USER_HOME

Ejemplo: c:/gradle-cache

Actual para Windows Server, como sin él, durante el ensamblaje del proyecto, todas las bibliotecas Gradle descargadas se almacenarán enC:\Windows\System32\config\systemprofile\.gradleCI adicional no podrá acceder a estos archivos.

Ruta:

C:\Gradle\gradle-3.3\binla ruta a la carpeta Gradle para un uso conveniente desde la línea de comandos.

Comprobación: escribimos CMD gradle -v

. Recibimos información sobre la versión actual:



4. Preparación del proyecto de Android

4.1. Crea un proyecto de prueba en Android Studio.

Tipo de actividad: actividad de navegación inferior. Será útil más tarde para crear una prueba de IU.

4.2. Desactive Gradle Daemon de forma continua, para que Gradle Daemon no se genere en CI:

agregue el archivo gradle.properties:
add org.gradle.daemon=false

4.3. También agregamos al archivo .gitignore(a su gusto) para que no queden archivos adicionales en VCS. 4.4. Cree un almacén de claves (o use uno existente) en la carpeta del proyecto. Enlace .

.gradle
.idea
/build/
local.properties





4.5. Agregue enlaces al almacén de claves a Gradle para que podamos construir un APK completo.

Ejemplo:

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

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

4.6. Para probar el estado del sistema, armaremos un nuevo proyecto desde la línea de comando. Ingrese en CMD:

cd < >

por ejemplo: C:\Users\1\Documents\GitHub\Command2

vaya al proyecto.

Ingrese: Estamos

gradlew assembleDebug

esperando la finalización de la asamblea.

Si todo está bien, obtenemos el resultado CONSTRUIR CON ÉXITO.



Vamos a la carpeta del proyecto: app\build\outputs\apk\debug

contiene un nuevo archivo APK que se puede instalar en el dispositivo y verificamos si todo funciona.

4.7. También verificaremos si se lanzan las herramientas SDK y el administrador AVD.

4.7.1. Inicie Android Studio y cree un emulador. Por supuesto, puede crearlo en la línea de comandos, pero tenemos el shell de la interfaz de usuario instalado, es un pecado no usarlo.

Herramientas → Administrador AVD:



la versión SDK del emulador creado debe ser al menos tan grande como nuestro proyecto SDK.

4.7.2. Creó un emulador. Vamos a ver su lanzamiento desde la consola. Ingresamos en la línea de comando:

start /min emulator -avd < >

Ejemplo:

start /min emulator -avd Pixel_2_API_25

Tenga en cuenta que usamos una función /minpara iniciar el emulador en segundo plano. De lo contrario, no habría permitido ingresar nuevos comandos en el CMD.
El dispositivo se está ejecutando:



4.7.3. Verificamos la instalación del APK recopilado.

Entramos en la CMD:

adb install <path_to_apk>

Ejemplo: Con

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

éxito:



4.7.4. Verificamos el lanzamiento del APK instalado.

Entramos en la CMD:

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

Ejemplo: La

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

aplicación comenzó:



4.7.5. Subimos el proyecto a un repositorio remoto, por ejemplo, a GitHub. Compruebe si se descargará el proyecto:

instale Git BASH (si usamos Git VCS). Enlace .

Clonamos el proyecto desde un repositorio remoto. Ingrese en la consola Git BASH:

git clone < .git>

Ejemplo:

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

Vemos el resultado. El proyecto se copió a una carpeta local:



todo está listo para instalar y configurar TeamCity. ¿Por qué estamos haciendo ejercicios con la línea de comando y no instalando inmediatamente TeamCity? Será mucho más conveniente asegurarse de antemano de que el proyecto está funcionando, de modo que en el futuro será más fácil localizar posibles errores en la etapa de construcción en TeamCity.

5. Instalación de TeamCity Server y Build Agent

No describiré el proceso de instalación en detalle. Está en la guía oficial y en muchas otras fuentes. Puerto del servidor de TeamCity Propongo configurar no estándar, para que sea más difícil calcular los escaneos de puertos.

6. Configuración de TeamCity Project → Build

En la configuración general, solo necesita establecer la ruta a la salida del APK:

Ejemplo:

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



6.1. Configuración de TeamCity VCS Roots

Todo es estándar. En nuestro proyecto, usamos Git, por lo que lo ingresamos y un enlace al repositorio remoto. Ejemplo:

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



6.2. Configuración de compilación de TeamCity

Agregue un paso de compilación, que compilará el proyecto y mostrará el APK. En nuestro proyecto usamos Gradle.

Ingrese en el campo Tareas de Gradle:

clean build assembleDebug --no-daemon(--no-daemon por si acaso, y esto debería funcionar como un subíndice del archivo que hicimos en la sección 4.2)



Haga clic en Ejecutar, obtenemos el APK.

7. Configuración de pasos de compilación con

pruebas automáticas de IU Llegamos a la parte más interesante, a saber, el lanzamiento automático de pruebas de IU.

Los pasos se iniciarán utilizando archivos .BAT. Es mucho más conveniente escribir código, cambiarlo sobre la marcha sin tener que ir a la interfaz de usuario de TeamCity, etc.

7.1. Primero, cree un paso de compilación con el emulador en ejecución.

Puede hacer que la URL a BATnik sea completa, por conveniencia, hice Environment en TeamCity BAT_FILEScon la ruta a la carpeta con BATniks:



escribimos el código de inicio del emulador en el archivo.

Ejemplo:

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
Lista de comandos y parámetros en un sitio externo : enlace .

7.2. Cree un paso de compilación con una pausa mientras se carga el emulador. Puede registrar inmediatamente el primer paso en .BAT, pero será más claro.

Un ejemplo de un equipo de este tipo que ha espiado en Internet:

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

desde la interfaz de usuario se verá así:



Lista de todos los equipos en el sitio externo : enlace.

7.3. Ejecute la prueba

También desde la línea de comando. Todo es individual aquí.

Comando de ejemplo:

gradlew connectedDebugAndroidTest

7.4. Paramos el emulador.

Comando de ejemplo:

adb -s emulator-5554 emu kill

proceso completado.

También puede cargar el informe en un paso separado. Por defecto, se guarda en la carpeta del proyecto.

¡Muchas gracias por su atención!

Si alguien tiene consejos para mejorar el código de pasos y sugerencias para mejorar, le agradeceré mucho.

All Articles