¿Qué es Jenkins? ¿Por qué utilizar la herramienta de integración continua (CI)?

¿Qué es Jenkins?

Jenkins es un servidor de integración continua de código abierto escrito en Java para orquestar una cadena de acciones para lograr el proceso de Integración Continua de forma automatizada. Jenkins respalda el ciclo de vida completo del desarrollo del software, desde la creación, las pruebas, la documentación del software, la implementación y otras etapas del ciclo de vida del desarrollo del software.

Jenkins es una aplicación muy utilizada en todo el mundo, con alrededor de 300 instalaciones y creciendo día a día. Al utilizar Jenkins, las empresas de software pueden acelerar su proceso de desarrollo de software, ya que Jenkins puede automatizar la compilación y las pruebas a un ritmo rápido.

Es una aplicación basada en servidor y requiere un servidor web como Apache Tomcat. La razón por la que el software Jenkins se hizo tan popular es por su monitoreo de tareas repetidas que surgen durante el desarrollo de un proyecto. Por ejemplo, si su equipo está desarrollando un proyecto, Jenkins probará continuamente las compilaciones de su proyecto y le mostrará los errores en las primeras etapas de su desarrollo.

¿Qué es la integración continua?

Integración continua es un proceso de integración de cambios de código de múltiples desarrolladores en un solo proyecto muchas veces. El software se prueba inmediatamente después de la confirmación del código. Con cada confirmación de código, el código se crea y se prueba. Si se pasa la prueba, se prueba la compilación para su implementación. Si la implementación es exitosa, el código se envía a producción.

Este compromiso, compilación, prueba e implementación es un proceso continuo y de ahí el nombre de integración/implementación continua.

¿Cómo actúa Jenkins?

Jenkins es una aplicación basada en servidor y requiere un servidor web como Apache Tomcat para ejecutarse en varias plataformas como Windows, Linux, macOS, Unix, etc. Para usar Jenkins, necesita crear canalizaciones que son una serie de pasos que seguirá un servidor Jenkins. Jenkins Continuous Integration Pipeline es un poderoso instrumento que consta de un conjunto de herramientas diseñadas para fortaleza, monitorear, compilar y test código, o cambios de código, como:

  • Servidor de integración continua (Jenkins, Bamboo, CruiseControl, TeamCity, y otros)
  • Herramienta de control de fuente (por ejemplo, CVS, SVN, GIT, Mercurial, Perforce, ClearCase y otros)
  • Herramienta de construcción (Hacer, ANT, Maven, Ivy, Gradle, y otros)
  • Marco de pruebas de automatización (Selenium, Appium, TestComplete, UFT y otros)

Historia de Jenkin

  • Kohsuke Kawaguchi, un Java El desarrollador, que trabajaba en SUN Microsystems, estaba cansado de crear código y corregir errores repetidamente. En 2004, creó un servidor de automatización llamado Hudson que automatiza las tareas de construcción y prueba.
  • En 2011, Oracle El propietario de Sun Microsystems tuvo una disputa con la comunidad de código abierto de Hudson, por lo que bifurcaron Hudson y le cambiaron el nombre a Jenkins.
  • Tanto Hudson como Jenkins continuaron operando de forma independiente, pero en poco tiempo Jenkins adquirió muchos proyectos y colaboradores, mientras que Hudson se quedó con solo 32 proyectos. Con el tiempo, Jenkins se volvió más popular y Hudson ya no recibe mantenimiento.

¿Por qué utilizar la integración continua con Jenkins?

Algunas personas podrían pensar que la forma tradicional de desarrollar software es la mejor. Entendamos las ventajas de la integración continua con Jenkins con el 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 que otros tardan 30 días en completarse.

Antes de Jenkins Después de Jenkins
Una vez que todos los desarrolladores habían completado las tareas de codificación asignadas, solían enviar su código todos al mismo tiempo. LaterLa compilación se prueba y se implementa.

La confirmación del código se creó y el ciclo de prueba fue muy poco frecuente y se realizó una sola compilación después de muchos días.

El código se crea y se prueba tan pronto como el desarrollador confirma el código. Jenkin creará y probará código muchas veces durante el día.

Si la compilación es exitosa, Jenkins implementará 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 creó todo a la vez, algunos desarrolladores tendrían que esperar hasta que otros desarrolladores terminaran de codificar para verificar su compilación. El código se crea inmediatamente después de que cualquiera de los desarrolladores confirme.
No es una tarea fácil aislar, detectar y corregir errores de múltiples confirmaciones. Dado que el código se crea después de cada confirmación de un único desarrollador, es fácil detectar qué código provocó que la compilación fallara.
Construcción de código y proceso de prueba son completamente manuales, por lo que hay muchas posibilidades de fallar. Proceso automatizado de construcción y prueba que ahorra tiempo y reduce defectos.
El código se implementa una vez que se corrigen y prueban todos los errores. El código se implementa después de cada compilación y prueba exitosas.
El ciclo de desarrollo es lento. El ciclo de desarrollo es rápido. Las nuevas funciones están más disponibles para los usuarios. Aumenta las ganancias.

Estudio de caso del mundo real de integración continua

Estoy seguro de que todos ustedes conocen el antiguo teléfono Nokia. Nokia solía implementar un procedimiento llamado compilación nocturna. Después de múltiples confirmaciones de diversos desarrolladores durante el día, el software se desarrolló todas las noches. Dado que el software se creó solo una vez al día, es muy complicado aislar, identificar y corregir los errores en una base de código grande.

Later, adoptaron un enfoque de integración continua. El software se creó y probó tan pronto como un desarrollador comprometió el código. Si se detecta algún error, el desarrollador respectivo puede solucionar el defecto rápidamente.

Estudio de caso del mundo real de integración continua

Complementos de Jenkins

De forma predeterminada, Jenkins viene con un conjunto limitado de funciones. Si desea integrar su instalación de Jenkins con herramientas de control de versiones como Git, debe instalar complementos relacionados con Git. De hecho, para la integración con herramientas como Maven, Amazon EC2, debe instalar los complementos respectivos en su Jenkins.

Complementos de Jenkins
Integración de complementos en Jenkins

Ventajas de usar Jenkins

  • Jenkins está siendo administrado por una comunidad que es muy abierta. Cada mes, celebran reuniones públicas y reciben aportaciones del público para el desarrollo del proyecto Jenkins.
  • Hasta ahora se han cerrado alrededor de 280 entradas y el proyecto publica una versión estable cada tres meses.
  • A medida que la tecnología crece, Jenkins también. 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 poderoso y rico en funciones.
  • La herramienta Jenkins también admite la 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 muchos desarrolladores adoran Jenkins, 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 que muchas personas no implementan Jenkins es por su dificultad para instalar y configurar Jenkins.
  • Las integraciones continuas se interrumpen periódicamente debido a algunos pequeños cambios de configuración. La integración continua se detendrá y, por lo tanto, requerirá cierta atención del desarrollador.

Conclusión

  • En Integración Continua, después de una confirmación de código, el software se construye y prueba inmediatamente
  • Jenkins se utiliza para orquestar una cadena de acciones para la integración continua en un proyecto de software.
  • Antes de Jenkins, cuando todos los desarrolladores habían completado las tareas de codificación asignadas, solían enviar su código todos al mismo tiempo. LaterLa compilación se prueba y se implementa.
  • Después de Jenkins, el código se crea y se prueba tan pronto como el desarrollador confirma el código. Jenkin creará y probará código muchas veces durante el día.
  • De forma predeterminada, Jenkins viene con un conjunto limitado de funciones. Si desea integrar su instalación de Jenkins con herramientas de control de versiones como Git, debe instalar complementos relacionados con Git. También verifique Mejores herramientas alternativas de Jenkins
  • La mayor ventaja de Jenkins es que es administrado por la comunidad, que realiza reuniones públicas y recibe aportes del público para el desarrollo de proyectos de Jenkins.
  • La mayor desventaja de Jenkins es que su interfaz está desactualizada y no es fácil de usar en comparación con las tendencias actuales de la interfaz de usuario. Si está considerando otras opciones que podrían ofrecer una experiencia de usuario más moderna, es posible que desee explorar algunas de las principales herramientas de integración continua para todos.