David Ortíz | 28 enero 2014 | Comentarios (0)
medium_8450190120

La Integración Continua (IC en adelante) es un modelo informático propuesto inicialmente por Martin Fowler mediante el cual se proponía la realización de integraciones automáticas de un proyecto continuamente Se entiende como integración inicialmente a la compilación y ejecución de pruebas de todo un proyecto pero que también puede incluir otras tantas tareas como descarga del código ubicado en un sistema de versionado, generación de informes, despliegue, etc. Todas estas tareas se conforman de forma cíclica para formar este proceso llamado IC.

Se entiende por una herramienta de IC aquellas aplicaciones con capacidad de monitorizar un sistema de control de versiones para controlar cambios. Si se detectan, una herramienta básica de éste ámbito automáticamente compila y ejecuta las pruebas unitarias de la aplicación pertinente, notificando a los desarrolladores la necesidad de revisar el código si se detectó un fallo y ayuda a ubicar en qué elementos se produjo durante este proceso. Estas herramientas son sistemas automatizados que no realizan todas las tareas por si mismos sino que se apoyan en otras (compiladores, generadores de informes, herramientas de ejecución de pruebas, etc.) para realizar el proceso de forma conjunta y unificar los resultados. Puede funcionar como herramienta de comunicación publicando reportes sobre toda la información obtenida de manera clara para el equipo de desarrollo, obteniéndose una imagen real del desarrollo del proyecto.

En esencia, estas herramientas tratan de reducir riesgos proporcionando realimentación de forma

rápida, automatización directa y planificación de diversos ámbitos del desarrollo como la compilación, pruebas y despliegue así como el mantenimiento de histórico de artefactos y reportes entre otros.

Según se indica en el libro de referencia “Jenkins, la Guía Definitiva”, la IC como proceso se debe ir adaptando en el grupo de trabajo pasando por distintas fases. Estas son:

  1. Sin servidor: Los productos inicialmente se compilan localmente en los equipos de los desarrolladores. Por cada nueva versión de código, se integran manualmente los cambios.
  2. Builds nocturnos: El equipo dispone de un servidor que ejecuta compilaciones de código cada cierto tiempo, regularmente por la noche. Se realizan commits frecuentemente y si hay conflictos, el servidor notifica el error al día siguiente. Los errores, por tanto, se siguen posponiendo.
  3. Builds nocturnos y test automáticos básicos: Aumenta la importancia de la IC y la automatización de test. El servidor realiza builds por cada commit realizado, por lo que se tiene acceso a los resultados al momento. Los builds incluyen compilación y ejecución y reporte de tests unitarios por lo que los errores pueden ser corregidos al momento.
  4. Dentro de las métricas: Se evalúa el código de forma automática para reportes de calidad del código y se crea a su vez la documentación de la API.
  5. Poniéndonos más serios con los tests: Los beneficios de la integración continua están estrechamente relacionados con técnicas solidas de testeo. En este punto prácticas como TDD son más comunes, resultando en una mayor confianza en los resultados de las builds automáticas. La aplicación no es solo compilada y testada, además, el servidor se encarga de desplegarla automáticamente sobre el servidor de la aplicación, para poder ejecutar tests más realistas sobre el rendimiento y la aplicación.
  6. Tests de aceptación automáticos y despliegue más automático: TDD de aceptación es practicado por el equipo, guiando los esfuerzos de desarrollo y proveyendo de un reporte de alto nivel del estado de la aplicación. Estos test automatizados usan herramientas de Behaviour-Driven Development y Acceptance-Test Driven Development para actuar como herramientas de comunicación y documentación, así como de testeo. Proporcionando resultados de las pruebas que personas que no sean los desarrolladores pueden entender. La aplicación es desplegada automáticamente sobre un servidor de test para que las personas del departamento de Calidad puedan testarla. El equipo de desarrollo es capaz de hacer rollbacks de las aplicaciones desplegadas por si algo falla.
  7. Despliegue continuo: La confianza en los test unitarios, de integración y aceptación es ahora tan grande que los equipos pueden aplicar el despliegue automático para enviar directamente los cambios a producción.

¿Qué es Jenkins?

Jenkins es una herramienta de IC de código abierto escrita en Java. Surgió inicialmente como bifurcación de un proyecto llamado Hudson aunque muchos consideran que tan solo fue un cambio de nombre. Ofrece soporte para muchos lenguajes de desarrollo y tecnologías, ya sea por soporte propio o mediante “plugins”.

Jenkins promueve la sencillez de uso con una interfaz web simple pero que ofrece grandes posibilidades abarcando obtención de código de diversos tipos de repositorios, compilación, ejecución de test, presentación de reportes, automatización de comandos, avisos mediante correos electrónicos, etc. Permite desplegarse en cualquier máquina o servidor (esta desarrollado en Java por lo que es multiplataforma) y su uso y configuración, basada en formularios web permite su utilización desde cualquier dispositivo con navegador.

Para la realización de todas estas tareas, Jenkins permite crear y configurar los llamados ‘jobs’, conjuntos de tareas parametrizables que definirán el proceso de integración continua que queremos realizar en un proyecto concreto. Se tratan de flujos de trabajo configurados para un determinado objetivo basado en uno o varios proyectos concretos.

La potencia real del sistema de IC Jenkins se obtiene de su soporte y variedad existente de plugins, gracias a los cuales se amplía su funcionalidad y compatibilidad con un gran número de servicios, tecnologías y lenguajes que no son soportados inicialmente.

Actualmente Jenkins es ampliamente utilizado en proyectos de multitud de empresas conocidas como Dell o Sony, proyectos de código abierto como GitHub y organizaciones varias como pueden ser Ebay, Facebook, etc.

Comments are closed.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR