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
generic
ya 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}/devkitARM
La 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.pl
Como
before test execution
nos 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 ~/TacticsDS
Como comando para ejecutar los tests usaremos únicamente
make
(en realidad nosotros tenemos algunos tests unitarios que se pueden ejecutar conmake test
pero 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