Integración continua con Travis


Una de las ventajas de trabajar en un Proyecto web open source con nodejs es lo fácil que puedes montar integración continua. 

En nuestro caso necesitábamos un servidor de integración continua para nuestra librería de validaciones de formularios (lcformValidation), los pasos que hemos dado:

  • Partimos de que teníamos configurado karma para lanzar los tests (para el proyecto web utilizamos webpack como herramienta de bundling).

  • Hemos instalado Phantomjs (un browser sin interfaz de usuario) para que ejecute los tests travis.

  • Hemos configurado una entrada en el package.json “npm test”.

  • Nos hemos creado una cuenta en travis y seleccionado el proyecto lcFormValidation.

  • Hemos definido un fichero .yml indicando que es un proyecto node, y la llamada a npm test.

  • Para finalizar hemos añadido el ”badge” en nuestro proyecto que muestra que la build ha tenido éxito.

Entremos en detalle.

Partimos de un fichero karma (puedes consultarlo en este enlace).

Hemos añadido a nuestro proyecto como dependencia de desarrollo Phantomjs

 

Lo siguiente que hemos hecho es definir en el package.json una llamada a karma pero indicando algunos cambios con respecto a la configuración inicial:

  • Que utilice Phantomjs en vez de Chrome para correr los tests.
  • Que ejecute los tests una sóla vez (así nos da un resultado).
{
  "name": "lc-form-validation",
  (...)
  "scripts": {
    "postinstall": "typings install",
    "test": "karma start --browsers PhantomJS --single-run "
  },

A continuación hemos creado un fichero .yml y lo hemos dejado en la raíz del proyecto, en nuestro caso hemos tenido que:

  • Indicarle que estamos trabajando con nodejs.
  • Cómo el package.json no se encuentra en la raíz de nuestro repositorio, indicarle la ruta exacta.

Contenido del fichero .travis.yml

language: node_js
script: cd lib && npm install && npm test

Ahora vamos a crear nuestra cuenta en travis, abrimos un navegador web y tecleamos la dirección:  https://travis-ci.org/, aquí creamos nuestra cuenta en travis (con el mismo login de GitHub nos vale), y de la lista de proyectos GitHub que obtenemos (tenemos que ser admin de esos proyectos para verlos) elegimos el que nos interesa y lo activamos.

Al hacer commit / push de nuestro proyecto, ya tenemos a travis trabajando en el build

Podemos seguir el progreso del build:

Si todo ha ido bien obtenemos un “verde” y recibimos un correo (por supuesto, esto no nos salió a la primera J).

 

Ahora que lo tenemos verde el siguiente paso es poner un distintivo en nuestra página de proyecto en GitHub que diga que los tests están pasando, para eso nos vamos al build de la rama que esté en progreso y pinchamos en la imagen que indica que el build se ha realizado y nos aparece un dialogo con una url a una imagen que podemos añadir al readme.md de nuestro proyecto en GitHub

Así en nuestro readme.md añadimos esa entrada

 

Cómo “postre” en nuestras pulls request automáticamente nos pasa un check que nos dice que nuestra rama pasa los test:

Podéis ver como esta esto implementado en este enlace.

Para finalizar aquí tenéis unos cuantos enlaces que os serán de ayuda: