Batalla de Jenkins y GitLab CI / CD

En la última década, se han logrado avances significativos en el desarrollo de herramientas de Integración Continua (CI) y Entrega Continua (CD). El desarrollo de tecnologías para integrar el desarrollo y la operación de software (Operaciones de desarrollo, DevOps) ha llevado a un rápido aumento de la demanda de herramientas CI / CD. Las soluciones existentes mejoran constantemente, se esfuerzan por mantenerse al día con los tiempos, se lanzan sus nuevas versiones, en el mundo del aseguramiento de la calidad del software (Quality Assurance, QA), constantemente aparecen muchos productos nuevos. Con tanta variedad de opciones, elegir la caja de herramientas adecuada no es una tarea fácil.







Entre todas las herramientas de CI / CD existentes, hay dos proyectos a los que definitivamente vale la pena prestar atención para cualquiera que busque algo en esta área. Estamos hablando de Jenkins y la herramienta GitLab CI / CD, que es parte de la plataforma GitLab. Jenkins tiene más de 16.000 estrellas en GitHub. El repositorio de GitLab en gitlab.com tiene poco más de 2000 estrellas. Si comparamos la popularidad de los repositorios, resulta que Jenkins ha obtenido 8 veces más estrellas que la plataforma, que incluye GitLab CI / CD. Pero al elegir una herramienta de CI / CD, este está lejos de ser el único indicador al que vale la pena prestar atención. Hay muchos otros, y esto explica por qué en muchas comparaciones Jenkins y GitLab CI / CD están muy cerca el uno del otro.



Tomemos, por ejemplo, los datos de la plataforma G2, que acumula reseñas sobre una amplia variedad de productos y calificaciones que los usuarios les otorgan. Aquí, Jenkins tiene una calificación promedio de 4.3 estrellas basada en 288 reseñas. Y sobre GitLab aquí tiene 270 reseñas, la calificación promedio de este instrumento es 4.4 estrellas. No nos equivocaremos al afirmar que Jenkins y GitLab CI / CD están compitiendo entre sí en igualdad de condiciones. Es interesante notar que el proyecto Jenkins apareció en 2011 y desde entonces ha sido una herramienta favorita de los probadores. Pero al mismo tiempo, el proyecto GitLab CI / CD, lanzado en 2014, tomó posiciones, muy altas, gracias a las capacidades avanzadas que ofrece esta plataforma.



Si hablamos de la popularidad de Jenkins en comparación con otras plataformas similares, notamos que, después de haber publicado un artículo comparando las plataformas Travis CI y Jenkins, organizamos una encuesta. Participaron 85 usuarios. Se pidió a los encuestados que eligieran la herramienta de CI / CD que más les gustara. El 79% eligió Jenkins, el 5% eligió Travis CI y el 16% indicó que prefiere otras herramientas.





Resultados de la encuesta



Entre otras herramientas de CI / CD, GitLab CI / CD se mencionó con mayor frecuencia.



Si se toma en serio DevOps, debe seleccionar cuidadosamente las herramientas adecuadas, teniendo en cuenta las características específicas del proyecto, su presupuesto y otros requisitos. Para ayudarlo a tomar la decisión correcta, analizaremos Jenkins y GitLab CI / CD. Esto, con suerte, le ayudará a tomar la decisión correcta.



Presentando a Jenkins





Jenkins es una conocida herramienta de CI / CD flexible diseñada para automatizar una variedad de tareas relacionadas con proyectos de software. Jenkins está escrito completamente en Java y publicado bajo la licencia MIT. Tiene un poderoso conjunto de capacidades destinadas a automatizar tareas asociadas con la creación, prueba, implementación, integración y lanzamiento de software. Esta herramienta se puede utilizar en una variedad de sistemas operativos. Estos incluyen macOS, Windows y muchas distribuciones de Linux como OpenSUSE, Ubuntu y Red Hat. Hay paquetes de instalación de Jenkins para diferentes sistemas operativos, esta herramienta se puede instalar en Docker y en cualquier sistema que tenga un JRE (Java Runtime Environment).



Los desarrolladores de Jenkins han creado otro proyecto, Jenkins X, que está diseñado para ejecutarse en Kubernetes. Jenkins X integra Helm, Jenkins CI / CD Server, Kubernetes y otras herramientas para crear canalizaciones de CI / CD que sigan las mejores prácticas de DevOps. Por ejemplo, usa GitOps aquí.



Uno puede agregar a las ventajas del banco de Jenkins el hecho de que sus guiones están muy bien estructurados, son comprensibles y fáciles de leer. El equipo de Jenkins ha creado alrededor de 1000 complementos que tienen como objetivo organizar la interacción de Jenkins con una variedad de tecnologías. En los scripts, puede utilizar sistemas de autenticación que, por ejemplo, le permiten conectarse a varios sistemas cerrados.



En el transcurso de la tubería de Jenkins, puede observar lo que sucede en cada paso, si ciertas etapas del trabajo se han completado con éxito o no. Puede observar todo esto, sin embargo, sin usar una determinada interfaz gráfica, pero usando las capacidades del terminal.



Funciones de Jenkins



Las características conocidas de Jenkins incluyen la facilidad de configuración, un alto nivel de automatización de varias operaciones y una excelente documentación. Si hablamos de resolver tareas de DevOps, entonces Jenkins se considera una herramienta muy confiable, con la cual, como regla, no tiene sentido monitorear de cerca todo el proceso de procesamiento del proyecto. Este no es el caso de otras herramientas de CI / CD. Hablemos de algunas de las características más importantes de Jenkins.



▍1. Soporte gratuito, de código abierto y multiplataforma



Jenkins puede ejecutarse en plataformas macOS, Windows y Linux. También se puede ejecutar en Docker, lo que permite que las tareas automatizadas se ejecuten de manera consistente y rápida. Esta herramienta también se puede ejecutar como servlet en contenedores habilitados para Java, como Apache Tomcat y GlassFish. La instalación de Jenkins está bien documentada .



▍2. Ecosistema desarrollado de complementos



El ecosistema de complementos de Jenkins parece mucho más maduro que los ecosistemas de complementos de otras herramientas de CI / CD. Actualmente hay más de 1500 complementos de Jenkins. Estos complementos están destinados a resolver una amplia gama de tareas, con su ayuda puede automatizar una variedad de proyectos. La gran cantidad de complementos gratuitos para elegir significa que alguien que usa Jenkins no tiene una necesidad urgente de comprar complementos pagos costosos. Jenkins se puede integrar con muchas herramientas de DevOps.



▍3. Fácil instalación y configuración



Jenkins es bastante fácil de instalar y configurar. Al mismo tiempo, el proceso de actualización del sistema también es muy conveniente. Aquí, nuevamente, vale la pena mencionar la calidad de la documentación, ya que en ella puedes encontrar respuestas a una variedad de preguntas relacionadas con la instalación y configuración de Jenkins.



▍4. Comunidad amigable



Como ya se mencionó, Jenkins es un proyecto de código abierto, cuyo ecosistema incluye una gran cantidad de complementos. Se ha formado una gran comunidad de usuarios y desarrolladores en torno a Jenkins, que ha ayudado a desarrollar el proyecto. La comunidad es uno de los factores que impulsa el desarrollo de Jenkins.



▍5. Disponibilidad de la API REST



Mientras trabaja con Jenkins, puede utilizar la API REST, que amplía las capacidades del sistema. La API para acceso remoto al sistema se presenta en tres versiones: XML, JSON con soporte JSONP, Python. Aquí está la página de documentación que revela los detalles de cómo trabajar con la API REST de Jenkins.



▍6. Soporte de tareas paralelas



Jenkins admite la paralelización de las tareas de DevOps. Puede integrarse fácilmente con herramientas relacionadas y recibir notificaciones del progreso de la tarea. La prueba de su código se puede acelerar organizando una compilación paralela del proyecto utilizando diferentes máquinas virtuales.



▍7. Soporte para trabajar en entornos distribuidos



Jenkins le permite organizar compilaciones distribuidas utilizando varias computadoras. Esta característica es aplicable en proyectos grandes y utiliza un esquema de trabajo, según el cual hay un servidor Jenkins principal y varias máquinas esclavas. Las máquinas esclavas también se pueden utilizar en situaciones en las que necesita organizar las pruebas de un proyecto en diferentes entornos. Estas características distinguen a Jenkins de otros proyectos similares.



Presentando GitLab





GitLab CI / CD es una de las herramientas más nuevas y más queridas por los ingenieros de DevOps. Esta herramienta gratuita de código abierto está integrada en el sistema de control de versiones de GitLab. La plataforma GitLab tiene una versión comunitaria, soporta la gestión de repositorios, herramientas para rastrear problemas, organizar revisiones de código, mecanismos enfocados a la creación de documentación. Las empresas pueden instalar GitLab localmente, vinculándolo a Active Directory y servidores LDAP para una autorización y autenticación segura del usuario.



Aquí hay un video tutorial para ayudarlo a aprender cómo crear canalizaciones de CI / CD utilizando las funciones de CI / CD de GitLab.



GitLab CI / CD se lanzó originalmente como un proyecto independiente, pero en 2015 este kit de herramientas se integró en GitLab 8.0. Un servidor GitLab CI / CD separado puede admitir más de 25.000 usuarios. Sobre la base de dichos servidores, puede crear sistemas con alta disponibilidad.



GitLab CI / CD y el proyecto principal de GitLab están escritos en Ruby y Go. Se publican bajo la licencia MIT. GitLab CI / CD, además de las capacidades habituales de las herramientas CI / CD, admite capacidades adicionales, como la programación del trabajo.



Es muy fácil integrar GitLab CI / CD en un proyecto. Cuando se usa GitLab CI / CD, el proceso de procesamiento del código del proyecto se divide en etapas, cada una de las cuales puede constar de varias tareas realizadas en un orden específico. Las tareas se prestan a un ajuste fino.



Las tareas se pueden ejecutar en paralelo. Después de configurar la secuencia de etapas y tareas, la canalización de CI / CD está lista para funcionar. Su progreso se puede monitorear monitoreando el estado de las tareas. Como resultado, usar GitLab CI / CD es muy conveniente, quizás más conveniente que otras herramientas similares.



Características de GitLab CI / CD y GitLab



GitLab CI / CD es una de las herramientas de DevOps más populares. El proyecto se distingue por una documentación de alta calidad, sus capacidades son fáciles y convenientes de usar. Si aún no está familiarizado con GitLab CI / CD, la siguiente lista de características de esta herramienta le dará una idea general de qué esperar de ella. Cabe señalar que muchas de estas características están relacionadas con la propia plataforma GitLab, en la que GitLab CI / CD está integrado.



▍1. Popularidad



GitLab CI / CD es una herramienta relativamente nueva que ha encontrado un uso generalizado. GitLab CI / CD se ha convertido gradualmente en una herramienta de CI / CD extremadamente popular utilizada para pruebas e implementación automatizadas de software. Es fácil de personalizar. También es una herramienta gratuita de CI / CD integrada en la plataforma GitLab.



▍2. Soporte de GitLab Pages y Jekyll



Jekyll es un generador de sitios estáticos que se puede utilizar dentro del sistema de páginas de GitLab para crear sitios basados ​​en repositorios de GitLab. El sistema toma los materiales de origen y genera un sitio estático listo para usar basado en ellos. Puede controlar la apariencia de estos sitios editando el archivo _config.ymlutilizado por Jekyll.



▍3. Capacidades de planificación de proyectos



La capacidad de planificar los hitos del proyecto facilita el seguimiento de los problemas y los grupos de problemas. Esto le permite administrar la organización del trabajo en proyectos, planificar su implementación para una fecha específica.



▍4. Escalado automático de corredores CI



Gracias al escalado automático de los corredores responsables de realizar tareas específicas, puede ahorrar seriamente en el costo del alquiler de la capacidad del servidor. Esto es muy importante, especialmente cuando se trata de entornos donde los proyectos se prueban en paralelo. También es importante para proyectos grandes con múltiples repositorios.



▍5. Herramientas de seguimiento de problemas



Las poderosas capacidades de seguimiento de problemas de GitLab han llevado a que la plataforma sea utilizada por muchos proyectos de código abierto. GitLab CI / CD permite realizar pruebas en paralelo de diferentes ramas de código. Es conveniente analizar los resultados de las pruebas en la interfaz del sistema. Esto hace que GitLab CI / CD sea diferente de Jenkins.



▍6. Restringir el acceso a los repositorios



La plataforma GitLab admite restringir el acceso a los repositorios. Por ejemplo, a quienes colaboran en un proyecto en un repositorio se les pueden asignar derechos que correspondan a sus roles. Esto es especialmente cierto para proyectos corporativos.



▍7. Apoyo comunitario activo



Se ha desarrollado una comunidad activa en torno a GitLab, que contribuye al desarrollo de esta plataforma y sus herramientas, en particular, GitLab CI / CD. La integración profunda de GitLab CI / CD y GitLab, entre otras cosas, facilita la búsqueda de respuestas a las preguntas que surgen al trabajar con GitLab CI / CD.



▍8. Soporte para trabajar con varios sistemas de control de versiones



GitLab CI / CD es un sistema que puede funcionar no solo con el código colocado en los repositorios de GitLab. Por ejemplo, el código se puede almacenar en un repositorio de GitHub y una canalización de CI / CD se puede organizar en GitLab usando GitLab CI / CD.



Comparación de Jenkins vs GitLab CI / CD



Jenkins y GitLab CI / CD son muy buenas herramientas, cada una de las cuales es capaz de hacer que la canalización de CI / CD funcione correctamente. Pero, si los comparas, resulta que, aunque en muchos aspectos similares, se diferencian entre sí de alguna manera.

Característica Jenkins GitLab CI/CD
. , — GitLab.
. .
. .
— . .
CI/CD- , Jenkins Pipeline. .
. .
1000 . GitLab.
API API. API .
JavaScript . .
(Slack, GitHub). Muchas herramientas para la integración con sistemas de terceros, en particular, con GitHub y Kubernetes.
Control de calidad del código Compatible: con el complemento SonarQube y otros complementos. Soportado.


Diferencias entre Jenkins y GitLab CI / CD



Habiendo descrito y comparado Jenkins y GitLab CI / CD, centrémonos en las diferencias entre estas herramientas de DevOps. Conocer estas diferencias ayudará a comprender a quienes prefieren una de estas herramientas sobre la otra.



  • GitLab CI / CD tiene control total sobre los repositorios de Git. Estamos hablando de administrar las ramas del repositorio y algunas otras características. Pero Jenkins, aunque sabe cómo trabajar con repositorios, no da el mismo nivel de control sobre ellos que GitLab CI / CD.
  • Jenkins es un proyecto de código abierto gratuito. Quien lo elige lo despliega de forma independiente. Y GitLab CI / CD está incluido en la plataforma GitLab, es una solución lista para usar.
  • GitLab CI / CD admite la gestión avanzada de tareas a nivel de proyecto. Este lado de Jenkins está menos desarrollado.


Jenkins y GitLab CI / CD: fortalezas y debilidades



Ahora comprende algo de Jenkins y GitLab CI / CD. Ahora, para que se familiarice aún mejor con estas herramientas, veamos sus fortalezas y debilidades. Suponemos que ya ha tomado una decisión sobre qué herramienta necesita. Con suerte, esta sección te permitirá ponerte a prueba.



▍ Fortalezas de Jenkins



  • Una gran cantidad de complementos.
  • Control total sobre la instalación de la herramienta.
  • Fácil depuración de corredores.
  • Fácil configuración de nodos.
  • Fácil implementación de código.
  • Muy buen sistema de gestión de credenciales.
  • Flexibilidad y versatilidad.
  • Soporte para varios lenguajes de programación.
  • El sistema es intuitivo.


▍Debilidades de Jenkins



  • .
  • Jenkins , , .
  • CI/CD-.


▍ GitLab CI/CD



  • Docker.
  • .
  • , CI/CD-.
  • .
  • .
  • .
  • .
  • .


▍ GitLab CI/CD



  • / .
  • .
  • CI/CD- .




Tanto Jenkins como GitLab CI / CD tienen fortalezas y debilidades. La respuesta a la pregunta de qué elegir depende de las necesidades y características de un proyecto en particular. Cada una de las herramientas de CI / CD revisadas hoy se diferencia en ciertas peculiaridades, aunque estas herramientas han sido creadas para resolver el mismo problema. Dicho esto, Jenkins es una herramienta independiente, mientras que GitLab CI / CD es parte de un marco para la colaboración de código.



Al elegir un sistema CI / CD, además de sus capacidades, vale la pena tener en cuenta los costos que pueden estar asociados con él y con qué están acostumbrados a trabajar los ingenieros de DevOps que apoyan el proyecto.



¿Qué herramientas de CI / CD utiliza?










All Articles