¿Qué es Jenkins?, Herramienta de Integración Continua

En este artículo vas a poder conocer que es Jenkins y qué es la integración continua, también sus ventajas y desventajas.

Así como algunos enlaces hacía los mejores y más importantes recursos con los que aprender a implementar Jenkins dentro de tus proyectos de la forma más adecuada, ¡Al lío!

Qué es Jenkins?

Jenkins

es un servidor automatizado de integración continua de código abierto capaz de organizar una cadena de acciones que ayudan a lograr el proceso de integración continua (y mucho más) de manera automatizada.

Jenkins está completamente escrito en Java y es una aplicación conocida y reconocida por DevOps de todo el mundo, más de 300.000 instalaciones y + 15.500 estrellas en Github lo respaldan.

La razón por la que Jenkins se hizo tan popular es porque se encarga de supervisar las tareas repetitivas que surgen dentro del desarrollo de un proyecto.

Por ejemplo, si tu equipo está desarrollando un proyecto, Jenkins probará continuamente las compilaciones del mismo y será capaz de mostrarte los errores que aparezcan a lo largo de las primeras etapas del desarrollo.

Al usar Jenkins, las compañías de software pueden acelerar su proceso de desarrollo del código; ya que Jenkins puede automatizar, agilizar y aumentar el ritmo de toda la compilación y las pruebas de los proyectos.

Además, Jenkins puede ser implementado a lo largo de todo el ciclo de vida completo del desarrollo.

Desde la fase construcción inicial, la fase de pruebas, en la documentación del software, en su implementación y en todas las demás etapas existentes dentro del ciclo de vida que desees aplicar.

Complementos de Jenkins

Por defecto, Jenkins viene con un conjunto limitado de características y si deseas integrar la instalación de Jenkins con herramientas de control de versiones como Git, necesitarás instalar complementos.

Al igual, para crear la integración de Jenkins junto a otras herramientas: Como Maven, Amazon EC2, etc.

? Web Oficial de Jenkins
? Documentación de Jenkins

La Historia de Jenkins

  • Kohsuke Kawaguchi, desarrollador de Java que trabajaba en SUN Microsystems, estaba cansado de construir el código y corregir errores repetidamente. En 2004, creó un servidor de automatización llamado Hudson que automatizaba la tarea de compilación y el trabajo de la realización de pruebas.
  • En 2011, Oracle, propietario de Sun Microsystems, tuvo una disputa con la comunidad de código abierto de Hudson y decidió bifucar el proyecto y renombrarlo como Jenkins.
  • Tanto Hudson como Jenkins continuaron operando de manera independiente. Pero en poco tiempo, Jenkins fue siendo utilizado en muchos más proyectos y junto a ellos fueron apareciendo muchos más nuevos contribuyentes al código fuente.
    Hudson, en la actualidad, se encuentra descontinuado; puesto que con el paso del tiempo, Jenkins se hizo más y más popular.

Qué es la integración continua?

En la integración continua después de una confirmación del código, el software se va creando y probando instantáneamente.

En un proyecto grande con muchos desarrolladores, los “commits” o cambios se realizan muchas veces todos los días.

Con cada envío del código confirmado, el proyecto se auto-genera y se prueba.

Si pasa la prueba, se prueba la compilación para la implementación; y si la implementación es exitosa, el código se envía a producción.

Este ciclo de actualización, compilación, prueba e implementación es lo que se denomina un proceso continuo y por esto; se le denomina integración continua, implementación continua u Entrega Continua.

Una tubería de integración continua es un poderoso instrumento que consiste en un conjunto de herramientas diseñadas para alojar, monitorear, compilar y probar código o múltiples cambios del código, como por ejemplo:

  • Servidores de integración continua (Jenkins, Bamboo, CruiseControl, TeamCity y otros)
  • Herramientas de control de versiones (CVS, SVN, GIT, Mercurial, Perforce, ClearCase y otros)
  • Herramientas de compilación (Make, ANT, Maven, Ivy, Gradle y otras)
  • Framework de pruebas o “testing” automatizados (Selenium, Appium, TestComplete, UFT y otros)

Por qué debemos realizar la integración continua con Jenkins?

Algunas personas podrían pensar que la forma tradicional de desarrollar el software es la mejor. Intentemos comprender las ventajas de la integración continua o CI con Jenkins, a través del siguiente ejemplo:

Imaginemos que hay alrededor de 10 desarrolladores que están trabajando en un repositorio compartido, algunos desarrolladores completan su tarea en 25 días, mientras tanto otros tardan 30 días en completarla.

Antes de Jenkins Después de Jenkins
Una vez que todos los desarrolladores hayan completado sus tareas de codificación asignadas, esperaban a confirmar su código al mismo tiempo. Más tarde, se realizan las pruebas y se implementaba. Por tanto, la compilación del código y el ciclo de prueba era muy poco frecuente y se realizaba una sola compilación después de muchos días. El código se crea y prueba tan pronto como el desarrollador lo confirma. Jenkins compilará y probará el código muchas veces durante el día. Si la compilación es exitosa, Jenkins desplegará la fuente en el servidor de prueba y notificará al equipo de implementación. Si la compilación falla, Jenkins notificará los errores al equipo de desarrolladores.
Dado que el código se creaba solamente una vez, algunos desarrolladores tenían que esperar hasta que el resto terminasen antes de verificar. El código se crea inmediatamente después de que cualquiera de los desarrolladores actualiza.
No era una tarea fácil aislar, detectar y corregir errores sobre múltiples modificaciones cargadas en una sola actualización. Dado que el código se construye después de cada actualización de un solo desarrollador, es fácil detectar qué código causó los fallos a la hora de la compilación.
El proceso de creación y prueba de código es completamente manual, por lo que hay muchas posibilidades de que apareciesen fallos. El proceso automatizado de construcción y pruebas ahorra mucho tiempo y reduce muchos posibles defectos.
El código se implementa para compilar, una vez que todos los errores se corrigen y prueban, retrasando así las pruebas finales ante de producción. El código se implementa después de cada compilación y prueba exitosas.
El ciclo de desarrollo es demasiado lento. El ciclo de desarrollo es más rápido. Las nuevas funciones están disponibles antes, para los usuarios por lo que se aumentan las ganancias.

Antes de trabajar con Jenkins

  • Una vez que todos los desarrolladores habían completado sus tareas de codificación asignadas, solían confirmar su código al mismo tiempo. Más tarde, Build se prueba y se implementa.
  • Compilación de código construida, y el ciclo de prueba fue muy poco frecuente, y se realizó una sola compilación después de muchos días.
  • Dado que el código se creó de una vez, algunos desarrolladores tendrían que esperar hasta que otros desarrolladores terminen de codificar para verificar su compilación.
  • No es una tarea fácil aislar, detectar y corregir errores para múltiples confirmaciones.
  • El proceso de creación y prueba de código es completamente manual, por lo que hay muchas posibilidades de falla.
  • El código se implementa una vez que todos los errores se corrigen y prueban.
  • El ciclo de desarrollo es lento.

Después de trabajar con Jenkins

  • El código se crea y prueba tan pronto como el desarrollador lo confirma. Jenkin compilará y probará el código muchas veces durante el día.
  • Si la compilación es exitosa, Jenkins desplegará la fuente en el servidor de prueba y notificará al equipo de implementación.
  • Si la compilación falla, Jenkins notificará los errores al equipo de desarrolladores.
  • El código se crea inmediatamente después de que cualquiera de los desarrolladores se compromete.
  • Dado que el código se construye después de cada confirmación de un solo desarrollador, es fácil detectar qué código causó que fallara la compilación.
  • Proceso automatizado de construcción y prueba que ahorra tiempo y reduce defectos.
  • El código se implementa después de cada compilación y prueba exitosas.
  • El ciclo de desarrollo es rápido. Las nuevas funciones están más disponibles para los usuarios. Aumenta las ganancias.

Ventajas de usar Jenkins

  • Jenkins está siendo administrada por la comunidad, que es muy abierta. Todos los meses, celebran reuniones públicas y reciben aportes del público para el desarrollo del proyecto Jenkins.
  • Hasta ahora, alrededor de 280 entradas están cerradas, y el proyecto publica un lanzamiento estable cada tres meses.
  • A medida que la tecnología crece, también lo hace Jenkins. Hasta ahora, Jenkins tiene alrededor de 320 complementos publicados en su base de datos de complementos. Con los complementos, Jenkins se vuelve aún más potente y rico en funciones.
  • Jenkins también admite arquitectura basada en la nube para que pueda implementar Jenkins en plataformas basadas en la nube.
  • La razón por la que Jenkins se hizo popular es que fue creado por un desarrollador para desarrolladores.

Desventajas de usar Jenkins

Aunque Jenkins es una herramienta muy poderosa, tiene sus defectos.

  • Su interfaz está desactualizada y no es fácil de usar en comparación con las tendencias actuales de la interfaz de usuario.
  • Aunque Jenkins es amado por muchos desarrolladores, no es tan fácil mantenerlo porque Jenkins se ejecuta en un servidor y requiere algunas habilidades como administrador del servidor para monitorear su actividad.
  • Una de las razones por las cuales muchas personas no implementan Jenkins se debe a su dificultad para instalar y configurar Jenkins.
  • Las integraciones continuas se rompen regularmente debido a algunos pequeños cambios de configuración. La integración continua se detendrá y, por lo tanto, requiere cierta atención del desarrollador.

Recursos de Jenkins

Recursos adicionales sobre Jenkins


La Guía de Jenkins fue creada el 22 de Mayo de 2020 y editada por última vez, el 10 de Mayo de 2021. ?

Relacionados