Cómo utilizar ejecutores específicos para potenciar sus compilaciones

TeamCity incluye un gran número de funciones que potenciarán sus compilaciones. En este tutorial, exploraremos cómo utilizar ejecutores específicos y por qué querrá utilizarlos.

¿Qué es un ejecutor de compilación y qué tipos de ejecutores hay disponibles en TeamCity?

El ejecutor de compilación es una parte de TeamCity que permite la integración con una herramienta de compilación específica (Ant, MSBuild, línea de comandos, etc.). Un ejecutor de compilación proporciona configuraciones que permiten especificar qué tareas de compilación ejecutar, qué versión de la herramienta de compilación utilizar, qué imagen de Docker/Linux utilizar como contenedor, etc. En una configuración de compilación, se define cómo un ejecutor de compilación debe ejecutar una compilación e informar de sus resultados. TeamCity ofrece muchos ejecutores de compilación listos para usar, incluidos .NET, Maven, Gradle, Docker, Python, Node.js, entre muchos otros.

Abramos y editemos una configuración de compilación. Aquí, tenemos un paso de compilación; un paso de compilación de línea de comandos. El script maneja los siguientes comandos:

  • cd en un directorio de servicios de calculadora.
  • Ejecuta mvn clean package.
  • Sube el archivo .jar a un bucket S3 privado.
tutorials-img

Aquí, vamos a deshacernos del paso mvn clean package y utilizaremos las funcionalidades específicas de Maven de TeamCity para ello. Podemos simplemente eliminar la línea en el script personalizado y hacer clic en Save:

tutorials-img

Añadir un nuevo paso de compilación

Después de eso, vamos a añadir un nuevo paso de compilación. TeamCity le sugerirá que elija un ejecutor específico:

tutorials-img

Para cada tecnología con la que se integra TeamCity, puede encontrar un ejecutor específico. Por ejemplo, si desea compilar proyectos .NET, elegiría un ejecutor .NET. Si desea ejecutar scripts de línea de comandos, utilizará un ejecutor de línea de comandos. Del mismo modo, utilizaría un ejecutor Docker para los pasos específicos de Docker, un ejecutor Gradle para los proyectos Gradle, etc.

Encontrará la lista completa de los ejecutores de compilación de TeamCity en la documentación.

Puesto que estamos trabajando con un proyecto Maven, elijamos Maven en la lista desplegable. Después, vamos a rellenar algunos campos que TeamCity sugiere en este paso.

tutorials-img

Nuestro archivo pom.xml se encuentra en el directorio de servicio de la calculadora, así que vamos a elegir la carpeta correcta haciendo clic en el icono del árbol. Al obtener una bonita vista en forma de árbol de todos los directorios, ya no tendrá que teclear el nombre del directorio (y potencialmente cometer un error ortográfico). Solo tiene que seleccionar el directorio de la lista.

Puede ejecutar el paso mvn clean package dentro de un contenedor Docker indicando un nombre de imagen Docker desde Docker hub, por ejemplo maven:latest. TeamCity obtendrá esta imagen, iniciará de forma transparente un contenedor Docker a partir de ella, ejecutará su objetivo mvn clean package en su interior y se deshará del contenedor después.

tutorials-img

Elegir un ejecutor de cobertura

Para continuar con la configuración manual de los pasos de compilación, haga clic en este enlace:

tutorials-img

En TeamCity, puede elegir un ejecutor de cobertura específico. Por ejemplo, puede añadir los ejecutores de cobertura de código de IntelliJ IDEA o JaCoCo, en lugar de codificarlo todo en su archivo pom.xml.

Añadamos com.jetbrains.teamcity.* como nombre de patrón de paquete. TeamCity analizará entonces los paquetes cuyos nombres coincidan con ese patrón para la cobertura de código.

tutorials-img

TeamCity también le permite configurar opciones avanzadas. Por ejemplo, puede elegir diferentes versiones del proyecto Maven o seleccionar una versión específica de Java para ejecutar todo el proyecto.

tutorials-img

Con todas estas opciones de interfaz de usuario, no tiene que preocuparse de si su invocación de línea de comandos va a funcionar. TeamCity se encargará de ello por usted.

Ahora, tenemos el script de línea de comandos en ejecución y el paso de Maven que viene después. Queremos reordenar nuestros pasos de compilación para que mvn clean package se ejecute primero y luego se produzca la carga de la línea de comandos a S3.

tutorials-img

Después de eso, simplemente haga clic en Run, y todo debería funcionar correctamente.

¿Qué nos permite hacer el ejecutor Maven?

Una vez que la compilación termine de ejecutarse, podrá acceder a la página de resumen de la compilación. Aquí, encontrará nuevas pestañas como Maven Build Info y Code Coverage, así como una nueva sección para los resultados de Tests y Code Coverage.

tutorials-img

Información de compilación de Maven

En la página Maven build info, obtendrá una visión general de los objetivos que ha ejecutado con cada versión específica de Maven. También verá los artefactos producidos, como el archivo .jar que produjo Maven.

El informe también le muestra todas las dependencias específicas con sus versiones en las que Maven hizo pull para esta compilación específica. Esto le ofrece una visión general de las bibliotecas que componen su compilación. También es útil a efectos de depuración.

Asímismo verá todos los complementos efectivos de Maven que se activaron durante esa compilación.

tutorials-img

Página de resumen de pruebas

La página de resumen de pruebas, que obtendrá gratuitamente al utilizar el ejecutor de Maven, le proporciona mucha información útil. Esto es lo que puede ver en el informe:

  • Estado general de la prueba (exitosa, fallida, defectuosa, etc.)
  • Clases y métodos de prueba ejecutados
  • Duración de las pruebas
  • El orden de ejecución de las pruebas

Cada prueba cuenta también con un historial de pruebas que le proporciona toda la información esencial sobre la prueba. El historial de pruebas es útil cuando necesita investigar problemas que puedan surgir con las pruebas, como «¿Por qué de repente esta prueba tarda más? ¿Es una prueba defectuosa?» y similares.

Hablamos de los informes de pruebas en detalle en este vídeo.

Informe de cobertura de código

El informe de cobertura de código nos proporciona información sobre las clases y métodos utilizados, así como el porcentaje de código que abarcan las pruebas.

Todo lo que tiene que hacer es seleccionar un par de opciones desplegables en el ejecutor de cobertura de código de IntelliJ IDEA para obtener todos estos informes en la interfaz de usuario de TeamCity.

tutorials-img

¡Eso es todo por ahora! Vea otros tutoriales para aprender a hacer uso de funciones específicas de TeamCity, como los informes de pruebas o los informes de cobertura de código.

¡Disfrute compilando!