¿Qué es Jenkins?
Jenkins es un servidor de Integración Continua de código abierto capaz de orquestar una cadena de acciones que ayudan a lograr el proceso de Integración Continua (y no solo) de manera automatizada.
Jenkins es gratuito y está completamente escrito en Java. Jenkins es una aplicación ampliamente utilizada en todo el mundo que tiene alrededor de 300k instalaciones y crece día a día.
Es una aplicación basada en servidor y requiere un servidor web como Apache Tomcat. La razón por la que Jenkins se hizo tan popular es por su seguimiento de las 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.
Al utilizar Jenkins, las empresas de software pueden acelerar su proceso de desarrollo de software, ya que Jenkins puede automatizar la creación y las pruebas a un ritmo rápido. Jenkins admite el ciclo de vida de desarrollo completo de software desde la creación, prueba, documentación del software, implementación y otras etapas del ciclo de vida de desarrollo de software.
En este tutorial, aprenderá
- ¿Qué es Jenkins?
- ¿Qué es la integración continua?
- Historia de Jenkin
- ¿Por qué utilizar la integración continua con Jenkins?
- Estudio de caso del mundo real de integración continua
- Ventajas de usar Jenkins
- Desventajas de usar Jenkins
¿Qué es la integración continua?
En la integración continua, después de la confirmación de un código, el software se crea y se prueba de inmediato. En un proyecto grande con muchos desarrolladores, las confirmaciones se realizan muchas veces durante el día. Con cada confirmación se crea y prueba el código. Si se pasa la prueba, la compilación se prueba para su implementación. Si la implementación es exitosa, el código se envía a producción. Esta confirmación, compilación, prueba e implementación es un proceso continuo y de ahí el nombre de integración / implementación continua.
Una tubería de integración continua es un poderoso instrumento que consta de un conjunto de herramientas diseñadas para alojar , monitorear , compilar y probar código o cambios de código, como:
- Servidor de integración continua (Jenkins, Bamboo, CruiseControl, TeamCity y otros)
- Herramienta de control de código fuente (por ejemplo, CVS, SVN, GIT, Mercurial, Perforce, ClearCase y otros)
- Herramienta de construcción (Make, ANT, Maven, Ivy, Gradle y otras)
- Marco de pruebas de automatización (Selenium, Appium, TestComplete, UFT y otros)
Historia de Jenkin
- Kohsuke Kawaguchi, un desarrollador de Java que trabajaba en SUN Microsystems, estaba cansado de crear el código y corregir errores repetidamente. En 2004, creó un servidor de automatización llamado Hudson que automatiza la construcción y la tarea de prueba.
- En 2011, Oracle, propietario de Sun Microsystems, tuvo una disputa con la comunidad de código abierto de Hudson, por lo que bifurcaron Hudson y lo rebautizaron como Jenkins.
- Tanto Hudson como Jenkins continuaron operando de forma independiente. Pero en poco tiempo, Jenkins adquirió muchos proyectos y contribuyentes, mientras que Hudson se quedó con solo 32 proyectos. Con el tiempo, Jenkins se hizo más popular y Hudson ya no se mantiene.
¿Por qué utilizar la integración continua con Jenkins?
Algunas personas pueden pensar que la forma antigua de desarrollar el software es la mejor. Entendamos las ventajas de CI 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 sus tareas de codificación asignadas, solían enviar su código al mismo tiempo. Posteriormente, Build se prueba y se implementa. La confirmación de código se compiló 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 prueba tan pronto como el desarrollador confirma el código. Jenkin compilará y probará el 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 compiló todo a la vez, algunos desarrolladores tendrían que esperar hasta que otros desarrolladores terminen de codificar para verificar su compilación. | El código se crea inmediatamente después de que cualquiera de los desarrolladores se comprometa. |
No es una tarea fácil aislar, detectar y corregir errores para múltiples confirmaciones. | Dado que el código se compila después de cada confirmación de un solo desarrollador, es fácil detectar de quién fue el código que causó el error de compilación. |
El proceso de creación y prueba del código es completamente manual, por lo que hay muchas posibilidades de error. | Proceso de construcción y prueba automatizado 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 exitosa. |
El ciclo de desarrollo es lento | El ciclo de desarrollo es rápido. Las nuevas funciones están disponibles más fácilmente 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 varias confirmaciones de diversos desarrolladores durante el día, el software se construyó 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 gran base de código.
Posteriormente, adoptaron el enfoque de Integración Continua. El software fue construido y probado tan pronto como un desarrollador comprometió el código. Si se detecta algún error, el desarrollador respectivo puede corregir rápidamente el defecto.
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.
Ventajas de usar Jenkins
- Jenkins está siendo administrado por la comunidad que es muy abierta. Todos los meses, realizan reuniones públicas y reciben aportes del público para el desarrollo del proyecto Jenkins.
- Hasta ahora, alrededor de 280 tickets están cerrados y el proyecto publica una versión estable cada tres meses.
- A medida que crece la tecnología, 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 poderoso y rico en funciones.
- 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 Jenkins es amado por muchos desarrolladores, su mantenimiento no es tan fácil 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 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 pausará y, por lo tanto, requiere la atención del desarrollador.
Conclusión:
- En la Integración Continua, después de una confirmación de código, el software se crea y se prueba de inmediato.
- Jenkins es un servidor de integración continua de código abierto capaz de orquestar una cadena de acciones
- Antes de Jenkins, cuando todos los desarrolladores habían completado sus tareas de codificación asignadas, solían enviar su código al mismo tiempo. Posteriormente, Build se prueba y se implementa.
- Después de Jenkins, el código se compila y se prueba tan pronto como el desarrollador confirma el código. Jenkin compilará y probará el 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, entonces necesita instalar complementos relacionados con Git
- Las mayores ventajas 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 Jenkin 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.