nDeveloper

Demonios……olvide ejecutar los TESTS y acaba de caerse el pipeline……

Cuantas veces hemos escuchado esta frase? Muchas veces, ¿verdad? O a su vez frases similares como: ¿Quién subió el último commit? O Revisen el ultimo cambio, acaba de caerse el pipeline……Palabras que se han vuelto cotidianas en el día a día del desarrollo de software y que de alguna manera puede llegar a molestar al resto del equipo que trabaja en el proyecto.

 

Se debe comprender, que el no ejecutar los tests comprende muchos factores, tales como el estrés cotidiano, a la presión de un requerimiento urgente, al cansancio, etc…
Pero…….
¿Existe alguna solución para poder controlar esto?

Ventajosamente SI, existe una solución y a continuación te explicaremos como hacerlo…


GIT [1] nuestro amado software de control de versiones nos provee de forma nativa varios scripts que se ejecutan antes o después de realizar acciones como commit, push y receive….Estos scripts se encuentran dentro del siguiente directorio en cada proyecto git que manejemos: .git\hooks, a estos scripts se los denomina githooks [2].

En este articulo nos centraremos exclusivamente en el githook pre-push, que se ejecuta antes de hacer push de un commit a nuestro repositorio. Y es justamente antes de que se ejecute el push a nuestro repositorio el estado perfecto para controlar la ejecución de nuestros tests.

 

Como mencionábamos antes, dentro del directorio .git\hooks se encuentra el siguiente listado de scripts:

Nota: Por defecto todos los nombres de estos scripts terminan con .sample, lo que indica a git que no se deben ejecutar.

Los pasos a seguir para configurar nuestro primer githook son los siguientes:

  1. Realizar una copia del archivo pre-push.sample.

  2. Renombrar el archivo nuevo para que su nombre quede como pre-push

  3. Luego editar el archivo y escribir los comandos que necesitemos ejecutar.

 

Nuestro objetivo es ejecutar los tests de una aplicación dotnet core, y es por ello que vamos a configurar nuestro githook con el comando dotnet test, quedando el script como lo indica la siguiente captura de pantalla:

La línea 1, nos indica como se ejecutará el script, para este caso será con sh [4].

Las líneas 3 y 4 obtienen el valor de los parámetros que git utiliza al ejecutar el githook. 

Las líneas de código de la 6-8 y 21-23 son solamente comentarios.

La Línea 10 contiene el comando que nos ayuda a ejecutar los test de un proyecto dotnet core.

Las líneas de la 13- 19 nos permite evaluar el estado de ejecución del comando de la línea 10.

Una vez escrito las líneas que necesitemos, lo que nos resta es probar nuestro githook…para ello primero guardamos los cambios realizados al script, y luego procedemos a ejecutar nuestro git push, dándonos como resultado lo siguiente:

TEST EJECUTADOS SATISFACTORIAMENTE

El push se ejecuta, subiendo nuestros commits al repositorio, quedando la ejecución de la siguiente manera:

TEST EJECUTADOS CON ERRORES

 

Al existir un error en la ejecución del test, nos muestra los errores correspondientes, y NO nos permite ejecutar el push, quedando la ejecución de la siguiente manera:

Conclusiones:

Como se puede apreciar, con la ayuda de los githooks y configurando pocas líneas de código (batch), podemos evitar los molestos dolores de cabeza que se presentan al no ejecutar los tests. Y a su vez, hemos aprendido a utilizar una característica poco conocida de GIT.

 

Referencias:

[1] Git – Wikipedia

[2] Git Hooks | Learn how to use pre-commit hooks, post-commit hooks, post-receive hooks, and more. | Matthew Hudson

[3] dotnet test command – .NET CLI | Microsoft Docs

[4] (#!/bin/bash ) What exactly is this ? | by Sanjay Mishra | Medium

Post a Comment