Variádico

Integración continua y pruebas automatizadas con Go, Drone, y Coveralls

12 de diciembre de 2015

La integración continua y pruebas automatizadas pueden ayudarte a encontrar errores en tus programas más fácilmente. Estas dos cosas son extremadamente comunes si trabajas en equipo. Hoy vamos a configurar la integración continua y pruebas automatizadas con Drone para un proyecto de Go. Luego, vamos a usar Coveralls para medir la cobertura de código de las pruebas incluidas. Me gustó usar Drone y Coveralls porque no se requieren archivos de configuración adicionales.

Configurar Drone

Primero tenemos que crear una cuenta en Drone.io. Es gratis si tu proyecto es de código libre. Recomiendo que hagas tu cuenta usando GitHub.

Una vez que hayas accedido a tu cuenta, da clic en New Project en la parte superior, hacia la derecha de la página. Luego, darás clic en «GitHub». Esto cargará una lista de tus repositorios en GitHub. Elige el que quierás configurar, dandole clic en Select. Ahora, elige qué lenguaje de programación usa tu proyecto. En este caso será Go.

Lo que sigue es el paso para automatizar el compilado de nuestra apli. Acuerden que yo elegí el lenguaje Go. Aquí voy a introducir los comandos que deseo que se ejecuten automáticamente.

go get -t
go build
go test

En este caso quiero ejecutar:

Da clic en Save. Luego da clic en Build Now para iniciar tu primera compilación. Si todo está en orden, deberías de ver Build #1 Success. En el futuro no tendrás que dar clic en Build Now, sino que cada vez que envies cambios a GitHub, este paso ocurrirá automáticamente.

Configurar Coveralls

En otra pestaña, vamos ir a Coveralls y crear una cuenta allá también. Al igual que Drone, también puedes usar tu cuenta de GitHub para registrarte con Coveralls.

Una vez que hayas accedido, da clic en Add Repos, busca tu repositorio, y dale clic en el interruptor para habilitar Coveralls para ese repo. Finalmente, da clic en Details.

Aquí vas a buscar algo parecido a repo_token: 1234567890zxcvbnm. Esto lo vas a copiar y pegar en Drone. En Drone, vete a la página de Settings y donde dice Environment Variables, pega la ficha. (Usa mayúsculas, como se muestra a continuación.)

REPO_TOKEN=1234567890zxcvbnm

Luego donde dice Commands, vamos a cambiarlo para que diga esto.

go get github.com/axw/gocov/gocov
go get github.com/mattn/goveralls
go get -t
go build
goveralls -v -service drone.io -repotoken $REPO_TOKEN

Estos cambios son para que Coveralls y Drone se comuniquen. Da clic en Build Now para iniciar otra compilación. Después regresa a Coveralls para verificar que la cobertura de código fue reportada correctamente.

Opcional: Colecta las insignias

Si quieres puedes recolectar las insignias que ofrecen Drone y Coveralls para destacarlas en el léeme de tu repositorio. Esto ayudará a tus usuarios saber si compila tu proyecto y ver cuál es la cobertura de código que tienen tus pruebas.

La insignia de Drone está en Settings > Status Badges.

Y la insignia de Coveralls está en la página de detalles de tu repo, a la derecha, donde dice Readme Badge.

Muy largo; no leí

Usa Drone.io y Coveralls para integración continua, automatizar pruebas, y obtener un reporte de cobertura de código de tus pruebas.

Añade tu repositorio a Coveralls y copia la repo_token.

Luego, añade el mismo repo a Drone, pega el repo_token como variable de entorno, copia lo siguiente y pégalo donde dice comandos.

go get github.com/axw/gocov/gocov
go get github.com/mattn/goveralls
go get -t
go build
goveralls -v -service drone.io -repotoken $REPO_TOKEN

Da clic en Save y finalmente en Build Now.