Publicar web con Travis CI
8 de Mayo de 2016
A los pocos días de poner la web en funcionamiento en Github Pages me di cuenta de que había que hacer algo para automatizar la publicación de contenido en la web. Tras analizar todas opciones decidí que Travis CI fuera el encargado de procesar todo el código y publicarlo en la web.
El ejemplo que voy a usar es el de mi web, así que explicare como publico el código generado por Jekyll y el descargado de componentes web como Polymer y otros ya que estos nunca están presentes en la rama que contiene el código del proyecto.
A continuación podéis ver de forma mas concreta el proyecto web y una ligera explicación de como funciona Gihub Pages. Ver proyecto web
Requisitos:
- Repositorio en Github con la web.
- Cuenta en Travis CI (Se puede hacer login con la cuenta de Github)
¿Como funciona Travis CI?
Travis es un sistema de integración continua el cual nos permite realizar test sobre nuestro código de Github. En nuestro caso ademas de comprobar que todo ha funcionado bien lo vamos a utilizar para publicar el código generado en otra rama de nuestro repositorio.
Travis se activa con cada push que se hace a nuestro repositorio o también con los pull request aunque esta última opción no la vamos a utilizar.
Configuración Travis CI
En primer lugar debemos obtener un token de Github para poder hacer push desde Travis, el token lo podemos obtener desde aquí
A continuación accederemos a la web de Travis donde lo autorizaremos para acceder a nuestro repositorio.
Una vez autorizado pasaremos configurar el repositorio en Travis mediante el botón de ajustes, deberemos activar las opciones que aparecen en la siguiente imagen y añadiremos una variable de entorno llamada GH_TOKEN donde pondremos el token obtenido en Github (Importante marcar el token como oculto/privado para que nadie lo pueda ver y utilizar).
Una vez este todo configurado solo tenemos que añadir el fichero de Travis y el script que ejecutaremos en nuestro repositorio de Github.
.travis.yml
Como se puede ver en este fichero especificaremos todo lo necesario para poder ejecutar nuestro código. En mi caso simplemente necesitaré Node.js y Ruby. Además especificaré el script que se tendrá que ejecutar, en este caso Travis actuara en todas las ramas que contengan este archivo pero podríamos limitar las ramas en el archivo de configuración.
deploy.sh
Este script simplemente ejecutará todas las instrucciones necesarias para obtener el código de la web y si todo va bien se configurará un usuario de git (Se puede modificar el email por el nuestro de Github para que se asocie el commit a nuestra cuenta) que sera el encargado de subir los cambios a la rama en la cual se publica la web que en este caso es master pero en otros podría ser gh-pages.
Una vez todo configurado para comprobar que funciona simplemente tendremos que hacer push a nuestro repositorio y desde la web de Travis podremos ver como se va ejecutando el código y si todo va bien se publicará en la rama correspondiente.