03 Mar 2015
Integración continua
Más de una vez nos hemos despistado, hemos añadido una nueva imagen, la hemos usado temporalmente en el proyecto y finalmente la hemos eliminado del disco pero no hemos eliminado todas las referencias. Si no se limpia con frecuencia el directorio de archivos intermedios el código compilado de estas imágenes permanece en el sistema de ficheros y el compilador puede enlazarlas al código y el desarrollador puede dejar referencias a ellas sin detectar ningún problema.
Esto puede no parecer importante pero cuando abres una pull-request y llueven los comentarios diciendo que el código no compila ya toma más prioridad que la que tenía inicialmente. Para asegurarnos de que no tenemos más problemas de este tipo hemos configurado un servidor de integración continua.
Como nuestro repositorio es privado hemos optado por MagnumCI. La configuración realmente es sencilla:
- El proyecto será de tipo
genericya que ninguna de las opciones casa muy bien con lo que estamos haciendo (todas son orientadas a desarrollo de servicios web mientras que este proyecto no usa Ruby ni NodeJS sino C y C++). Habrá que declarar dos variables de entorno:
DEVKITPRO=~/devkitPro DEVKITARM=${DEVKITPRO}/devkitARMLa instalación de dependencias es algo más compleja, usaremos el siguiente script que elaboramos para preparar nuestro entorno de desarrollo.
cd ~/ wget -O ~/devkitARMupdate.pl http://goo.gl/rjbq5P chmod a+x ~/devkitARMupdate.pl ~/devkitARMupdate.plComo
before test executionnos situaremos en la carpeta con el código fuente del proyecto (ya que en la instalación de dependencias nos hemos cambiado de directorio):cd ~/TacticsDSComo comando para ejecutar los tests usaremos únicamente
make(en realidad nosotros tenemos algunos tests unitarios que se pueden ejecutar conmake testpero son pequeños tests para verificar el correcto funcionamiento del componente de aritmética en coma fija y realmente no cubre demasiada parte del proyecto, de modo que con confirmar que el proyecto se compila nos es suficiente, de momento).
Con esto podemos comprobar el estado del proyecto cada vez que hacemos push al repositorio y corregir rápidamente estos despistes.

Hasta la próxima,
Mark, Víctor y Lluís
at 09:40