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!
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:
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.
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:
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.
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.
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:
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..
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.!
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:
idioma: ruby rvm: - 1.9.3
ante_script: - git config --global usuario.nombre [mi nombre]
notificaciones: correo electrónico: falso irc: "chat.freenode.net # travis"
.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
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.
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:
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!