Travis-CI qué, por qué, cómo

Travis CI facilita el trabajo en equipo para un proyecto de software con compilaciones automatizadas. Estas compilaciones se activan automáticamente cuando cada desarrollador verifica su código en el repositorio. En este artículo, veremos cómo podemos integrar Travis CI fácilmente con nuestro proyecto, que está alojado en Github. Con la automatización, la notificación y las pruebas implementadas, podemos enfocarnos en nuestra codificación y creación, mientras que Travis CI hace el trabajo duro de la integración continua!


Hola Travis & CI!

Travis CI es una plataforma de integración continua alojada que es gratuita para todos los proyectos de código abierto alojados en Github. Con solo un archivo llamado .travis.yml Al contener información sobre nuestro proyecto, podemos activar compilaciones automatizadas con cada cambio en nuestra base de código en la rama maestra, otras sucursales o incluso una solicitud de extracción..

Antes de comenzar con cómo podemos integrar Travis con nuestro proyecto, los siguientes requisitos previos serán útiles:

  1. Git
  2. Github
  3. Nodos básicos
  4. NPM
  5. GruntJS

En el corazón del uso de Travis, está el concepto de integración continua (CI). Digamos que estamos trabajando en una característica y después de que hayamos terminado la codificación, normalmente construir el proyecto para crear el ejecutable, así como otros archivos necesarios para ejecutar la aplicación. Una vez completada la compilación, las buenas prácticas incluyen ejecutar todas las pruebas para asegurarse de que todas estén aprobándose y todo funcione como se espera.

El último paso es garantizar que todo lo que codifiquemos funcione, incluso después de integrarlo en el código de la línea principal. En este punto construimos y probamos de nuevo. Si la compilación integrada tiene éxito, podemos considerar que la característica se ha implementado completamente. Travis CI automatiza este paso exacto de desencadenar una compilación y prueba en cada integración a la rama maestra, a otras ramas o incluso a una solicitud de extracción, lo que acelera el tiempo para la detección de un posible error de integración.

En las siguientes secciones, tomaremos un proyecto simple y activaremos una compilación que falla, lo corregiremos y luego lo aprobaremos. También veremos cómo Travis CI funciona fácilmente con las solicitudes de extracción de Github.


Interfaz Travis

Cuando llegamos a la página principal, también podemos ver el "ajetreo" de muchos proyectos de código abierto a través de la compilación automatizada. Vamos a deconstruir la interfaz y entender las diferentes partes:


  1. Barra lateral: Esto muestra la lista de proyectos públicos de código abierto en Github actualmente en proceso de compilación automatizada. Cada elemento tiene el nombre del proyecto enlazado, la duración de la construcción hasta el momento y el número secuencial de la construcción.
  2. Construir en progreso [amarillo]: un pequeño círculo de color amarillo al lado del nombre del proyecto indica que la construcción está en progreso.
  3. Construcción fallida [rojo]: un pequeño círculo de color rojo al lado del nombre del proyecto indica que la compilación está completa y ha fallado.
  4. Construcción pasada [verde]: un pequeño círculo de color verde junto al nombre del proyecto indica que la compilación está completa y ha pasado.
  5. Nombre del proyecto y enlaces.: El título está en el formato. nombre de usuario / repositorio y está vinculado a la página de compilación de Travis CI. El pequeño símbolo de Octocat que se encuentra a su lado enlaza con la página Github del repositorio que contiene su código fuente.
  6. Tipos de construcción: Las compilaciones automatizadas pueden activarse al enviar el código a la rama maestra, a otras sucursales o incluso a una solicitud de extracción. Al visitar la pestaña individual, podemos obtener más información sobre las compilaciones.
  7. Actividad de construcción: Esta sección incluirá información sobre cada una de las tareas que la compilación está ejecutando.

Paso 1: Hola Mundo!

Antes de integrar Travis CI, crearemos un proyecto simple "hola mundo" y crearemos algunas tareas de compilación. Travis admite varios lenguajes de programación, incluyendo Python, Ruby, PHP y JavaScript con NodeJS. Para el propósito de nuestra demostración, utilizaremos NodeJS. Vamos a crear un archivo muy simple. hola.js como se define en el sitio web principal de NodeJS:

 var http = require ('http'); http.createServer (function (req, res) res.writeHead (200, 'Content-Type': 'text / plain'); res.end ('Hello World \ n') // falta el punto y coma falla la compilación). listen (1337, '127.0.0.1'); console.log ('Servidor que se ejecuta en http://127.0.0.1:1337/');

Tenga en cuenta que falta un punto y coma para que, más adelante, en JSHint, un indicador de JavaScript pueda detectar esto y generar un error. Construiremos el proyecto usando un corredor de tareas llamado GruntJS que incluirá JSHint. Esto es, por supuesto, una ilustración, pero en proyectos reales, podemos continuar con varias tareas de prueba, publicación, alineación y sugerencias..

Para indicar los diversos paquetes requeridos para GruntJS, JSHint y otros, crearemos un segundo archivo llamado paquete.json. Este archivo contendrá primero el nombre y el número de versión de nuestra aplicación simple. A continuación, definiremos las dependencias necesarias con Dependencias que incluirá paquetes relacionados con GruntJS incluyendo JSHint. Con guiones, Le diremos a Travis CI que comience a ejecutar el conjunto de pruebas y el comando gruñido. Veamos los contenidos completos del archivo: paquete.json:

 "name": "node-travis", "version": "0.1.0", "devDependencies": "grunt": "0.4.1", "grunt-cli": "0.1.9", "grunt -contrib-jshint ":" 0.6.0 "," scripts ": " test ":" grunt --verbose "

A continuación, preparemos la Gruntfile.js que incluirá todas las tareas necesarias para ejecutar nuestra compilación. Para simplificar, podemos incluir una sola tarea: alineación de JavaScript con JSHint.

 module.exports = function (grunt) grunt.initConfig (jshint: all: ['Gruntfile.js', 'hello.js']); grunt.loadNpmTasks ('grunt-contrib-jshint'); grunt.registerTask ('predeterminado', 'jshint'); ;

Finalmente, ejecutaremos la compilación que contiene una sola tarea después de descargar todos los paquetes relacionados con npm instalar:

 $ npm install $ grunt

Como se esperaba, la compilación no pasará porque la JSHint detectará un punto y coma faltante. Pero si volvemos a colocar el punto y coma en el hola.js archiva y ejecuta el gruñido comando una vez más, veremos que la construcción pasará.


Ahora que hemos creado un proyecto simple localmente, lo llevaremos a nuestra cuenta de Github e integraremos Travis CI para activar la compilación automáticamente.


Paso 2: Hola Mundo Con Travis CI

El primer paso para integrar Travis CI es crear un archivo llamado .travis.yml que contendrá la información esencial sobre el entorno y las configuraciones para que la compilación se ejecute. Para simplificar, solo incluiremos el entorno de programación y la versión. En nuestro proyecto simple, es la versión NodeJS. 0.10. El contenido final del archivo. .travis.yml será el siguiente:

 idioma: node_js node_js: - "0.10"

Ahora nuestro proyecto consistirá en los siguientes archivos junto con README.md y .gitignore según sea necesario:

 $ arbol. | - .travis.yml | - Gruntfile.js | - hello.js | - .gitignore | - README.md '- package.json

Ahora vamos a crear un repositorio git y enviarlo a un nuevo repositorio remoto alojado en Github:

 git init git commit -m "primer commit" git remoto agregar origen [email protected]: [nombre de usuario] / [repositorio] .git git push -u maestro de origen

A continuación, inicie sesión en Travis CI y autorice a Travis CI a acceder a su cuenta de Github. Luego, visite su página de perfil para activar el enlace del repositorio de Github para desencadenar compilaciones automatizadas con Travis CI.


Como paso final para activar nuestra primera versión, tendremos que empujar a Github. Quitemos el punto y coma del archivo. hola.js para hacer una construcción defectuosa y luego empujar a Github. Esto activará la compilación automatizada en Travis CI. Visitemos la URL: https://travis-ci.org/[nombredeusuario/hreprepo] para ver la primera construcción en progreso!

 git add hello.js git commit -m "eliminado el punto y coma" git push

Esta versión fallida en el ejemplo anterior es realmente una ilustración simple. Pero esta situación refleja algo que podría suceder en nuestros proyectos reales: tratamos de integrar nuestro código y la compilación automatizada falla. De forma predeterminada, una vez completada cada compilación, Travis CI enviará correos electrónicos al autor del autor y al propietario del repositorio. De esta manera, el desarrollador que empujó el código recibe una alerta inmediata y luego puede corregir los errores de integración. En nuestro caso, simplemente insertemos el punto y coma faltante y empujemos a Github una vez más.

 git add hello.js git commit -m "agregó punto y coma para pasar la compilación" git push

¡Hurra! La compilación automatizada ha pasado esta vez. Nuestro código está integrado pasando todas las pruebas requeridas. Ahora, cada vez que intentamos integrar nuestros cambios, ya sea en la rama maestra o incluso en otras, Travis CI activará una compilación automatizada.


Solicitudes de extracción

Una vez que hayamos integrado Travis CI en nuestro proyecto, una solicitud de extracción también activará una compilación automatizada. Esto es sumamente útil para el propietario del repositorio o el desarrollador que está a cargo de fusionar el código base. Veamos cómo Travis CI notificará si la solicitud de extracción es buena para fusionar o no.

Primero, usando otra cuenta de Github, vamos a bifurcar el repositorio original y extraer la solicitud con los siguientes pasos:

  1. Bifurca el repositorio original
  2. Crear una nueva rama en el repositorio bifurcado.
  3. Haz los nuevos cambios y compromételos.
  4. Asegúrate de elegir la rama de la característica
  5. Comparar y sacar solicitud

Fusionarse con precaución

Para simular una compilación fallida en la solicitud de extracción, volveremos a eliminar el punto y coma del archivo. hola.js, cometer y empujar los cambios y finalmente tirar solicitud.


Tras cada solicitud de extracción, Travis CI activará automáticamente la compilación. Esta vez, también podemos visitar el "Solicitudes de extracción" pestaña para ver el historial de construcciones actuales o pasadas activadas debido a una solicitud de extracción.


Después de que Travis CI complete la compilación, si visitamos la página de solicitud de extracción desde el repositorio original, veremos que Travis CI ha agregado algunos cambios en la interfaz de usuario para avisarnos que la compilación ha fallado..


Bueno para fusionar

Este estado de compilación fallido se notificará de inmediato al propietario del repositorio, así como al desarrollador que realizó la solicitud de extracción. Y ahora, dependiendo de la razón de la compilación fallida, se puede rectificar con otra confirmación en la misma rama. Por lo tanto, agreguemos el punto y coma y extraiga la solicitud una vez más. Github actualizará automáticamente la página de solicitud de extracción también.


Y finalmente, cuando volvamos a la página de solicitud de extracción del repositorio original, esta vez veremos una señal "verde" para seguir adelante y hacer una fusión a medida que nuestra compilación pasa.!



Construir configuraciones

El archivo .travis.yml define las configuraciones de construcción. Nuestro ejemplo incluyó solo el tipo de idioma y la versión, pero podemos agregar más útiles de la siguiente manera:

  1. Idioma específico. Este es un ejemplo para Ruby.
     idioma: ruby ​​rvm: - 1.9.3
  2. Comandos o scripts para ejecutar antes o después de cada compilación. Este es un ejemplo de un comando antes de ejecutar un script:
     ante_script: - git config --global usuario.nombre [mi nombre]
  3. Las notificaciones en términos de correos electrónicos o alertas de chat se envían según lo declarado por las configuraciones de compilación. Este es un ejemplo de cómo desactivar los correos electrónicos y enviarlos a IRC:
     notificaciones: correo electrónico: falso irc: "chat.freenode.net # travis"

Validación .travis.yml

Como puedes ver, el archivo. .travis.yml se vuelve muy importante para activar construcciones automatizadas. Si este archivo no es válido, Travis CI no activará la compilación en cada envío a Github. Por lo tanto, es importante asegurarse de que tenemos un archivo válido que Travis CI interpretará correctamente. Para esto, instalaremos una gema llamada travis-lint y ejecutaremos el archivo. .travis.yml

 $ gem instalar travis-lint $ travis-lint .travis.yml


Imágenes de estado de compilación

Es realmente útil incluir una pequeña imagen para indicar el estado actual de la construcción. La imagen en sí se puede acceder desde el patrón de URL http://travis-ci.org/[nombredeusuarioides/◆repository-name◆.png. Otra forma de acceder rápidamente a las imágenes incrustadas en varios formatos es en la página del proyecto Travis CI. Por ejemplo, podemos copiar el formato Markdown e incrustarlo en el proyecto. README.md expediente.


Otra forma interesante de rastrear los estados de compilación de varios proyectos de código abierto mientras navega por Github es instalar una de las extensiones del navegador. Esto colocará las imágenes de estado de compilación prominentemente al lado de cada uno de los nombres de proyectos.


Recursos en Travis CI

Aquí hay algunos recursos sobre el concepto de integración continua, así como el aprendizaje e integración de Travis CI en nuestros proyectos de Github:

Una forma fantástica de aprender qué y cómo incluir las diversas configuraciones de compilación en el .travis.yml El archivo es navegar por muchos de los populares repositorios de código abierto que ya integran Travis CI. Aquí hay algunos:

  1. Ruby on Rails (Ruby)
  2. BackboneJS (JavaScript)
  3. Compositor (PHP)
  4. Frasco (Python)

Espero que esto le haya brindado una breve introducción de cómo podemos integrar fácilmente Travis CI en nuestros proyectos Github. Es realmente fácil de usar, así que pruébelo y haga que la integración continua sea una brisa para su equipo!