El desarrollo de software es un viaje. Comienza con la planificación, el análisis, el diseño, el desarrollo, las pruebas, la implantación y el mantenimiento. Los desarrolladores de software necesitan varias herramientas para utilizar en este viaje.

GitLab CI y Jenkins son algunos de los nombres más importantes en el nicho de la integración y entrega continuas (CI/CD). CI/CD es un conjunto de procesos que automatizan el desarrollo de software.

Este artículo GitLab vs. Jenkins definirá cada herramienta, explicará cómo funciona cada una y comparará sus características clave.

¿Qué es GitLab CI?

GitLabContinuous Integration and Delivery es una herramienta DevOps que automatiza los pasos necesarios para construir, probar y desplegar su código en su entorno de producción.

GitLab CI

GitLab CI consta de dos partes: Integración Continua (CI) y Entrega/Despliegue Continuo (CD).

La integracióncontinua se encarga de automatizar todas las compilaciones. Esta función también proporciona retroalimentación a través de la revisión del código y automatiza las pruebas de seguridad y calidad de su código. Por último, CI crea un paquete de lanzamiento para desplegarlo en su entorno de producción.

La parte de despliegue continuo del CI de GitLab aprovisiona automáticamente la infraestructura y gestiona la emisión de tickets, los cambios en la infraestructura y el versionado de la versión. CI ofrece un entorno para el despliegue progresivo de código y permite la verificación y supervisión de todos los cambios realizados. Esta característica también permite a los usuarios revertir los cambios siempre que sea necesario.

Cuando se combinan ambas características, se puede automatizar todo el ciclo de vida de desarrollo de software (SDLC) con una intervención manual mínima.

En pocas palabras, GitLab CI se utiliza para;

  • Almacenar y gestionar código
  • Automatizar el proceso CI/CD
  • Realizar un seguimiento de las incidencias
  • Asegurar el código
  • Colaborar

Ventajas de utilizar GitLab CI

  • Mayor velocidad: Ya no tendrá que pasar por procesos manuales como construir, probar y desplegar código cuando utilice GitLab CI.
  • Mejora de la calidad del código: Con GitLab CI, puede capturar fallos y errores en su código antes de que pasen a producción.
  • Seguridad: GitLab CI dispone de varias funciones de seguridad como el escaneo de vulnerabilidades, la gestión de secretos y el escaneo de código para reducir las amenazas de piratería informática.
  • Flexible: Puede personalizar GitLab CI para satisfacer las necesidades de su equipo de desarrollo. Puede utilizar esta herramienta con los principales lenguajes y frameworks.
  • Pruebas automatizadas: No tiene que ejecutar pruebas manualmente, ya que puede escribir scripts para escribir y ejecutar pruebas automáticamente.

¿Qué es Jenkins?

Jenkins es un servidor de automatización extensible. Esta herramienta de código abierto ayuda a los usuarios a gestionar y construir pipelines de Integración Continua y Entrega Continua (CI/CD). Jenkins es una de las herramientas favoritas de DevOps y de los ingenieros de software, ya que ayuda a mejorar la calidad del software, la fiabilidad y la velocidad de entrega.

Jenkins

Jenkins ejecuta una serie de «trabajos» o pasos en una canalización. Un trabajo consta de varios pasos que se ejecutan en una secuencia. Un paso en Jenkins puede ser una compilación, una prueba, un despliegue o cualquier otra tarea que pueda automatizarse en el ciclo de vida del desarrollo de software.

Los usos de Jenkins pueden resumirse como sigue;

  • Integración continua
  • Entrega continua
  • Pruebas automatizadas
  • Monitorización e informes
  • Escaneo de código
  • Programación de trabajos

Ventajas de utilizar Jenkins

  • Escalable: Puede utilizar Jenkins tanto con aplicaciones pequeñas como grandes.
  • Fácil configuración: Jenkins tiene un proceso de configuración sencillo apoyado por suficientes recursos.
  • Gran comunidad: Jenkins existe desde hace casi dos décadas y ha atraído a muchos seguidores.
  • Gran variedad de plugins: Puede mejorar la funcionalidad de Jenkins utilizando su amplia variedad de plugins.
  • Permite la ejecución de trabajos en paralelo: Con Jenkins, puede realizar diferentes tareas simultáneamente, ahorrando tiempo.

Similitudes de GitLab CI y Jenkins

  • Ambas soportan la integración continua y la entrega continua.
  • Ambas son herramientas de código abierto.
  • Ambas cuentan con una gran comunidad y seguidores.
  • Ambas soportan una gran variedad de lenguajes y frameworks
  • Ambas automatizan varias tareas en el ciclo de vida del desarrollo de software
  • Ambas tienen un gran ecosistema de plugins y extensiones

GitLab CI frente a Jenkins: Una comparación de características

CaracterísticaGitLab CIJenkins
Código abierto
Soporte de idiomas Muchos idiomas Muchos idiomas
Precios La mayoría de las funciones están disponibles en el plan gratuito. La herramienta también dispone de planes de pago con más funciones.Una plataforma más nueva; se creó en 2014.
Madurez Una plataforma más nueva; fue creada en 2014.Jenkins se lanzó como Hudson pero se bifurcó y pasó a llamarse Jenkins en 2011.
Facilidad de uso Fácil de usarPuede resultar complicado para los principiantes.
AlojamientoInterno y externoInterno y externo
Requisitos previosNode.JS, Git, Ruby, GoEntorno de ejecución Java

GitLab CI Vs. Jenkins: Comparación detallada

Aunque GitLab y Jenkins comparten similitudes, ambos tienen claras diferencias que afectan a la forma en que gestionan el proceso de CI/CD. Estas son algunas de las principales;

Arquitectura

Jenkins emplea una arquitectura maestro-trabajador para gestionar las construcciones.

  • El maestro de Jenkins programa las construcciones de los trabajos y las distribuye a los trabajadores para su ejecución real. También supervisa el estado de los workers, recopila y agrega todos los resultados de la compilación en el panel web.
  • El trabajadorJenkins es un ejecutable Java que se ejecuta en una máquina remota. También conocido como agente de construcción, esta característica escucha todas las peticiones del maestro y las ejecuta. Puede tener hasta 100 nodos y añadir o eliminar trabajadores según le convenga.

GitLab CI forma parte de GitLab, una interfaz basada en web para gestionar repositorios, solicitudes de fusión y mucho más. GitLab CI tiene varios componentes;

  • La herramienta GitLab CI/CD le permite gestionar las compilaciones.
  • Los GitLab Runners ejecutan todos los trabajos de CI. Este proceso ligero puede ejecutarse en la nube o en su máquina.
  • Las configuraciones de la tubería CI/CD se definen en el archivo .gitlab-ci.yml. Este archivo define todos los trabajos, etapas y pasos del pipeline.

Plugins

Jenkins tiene más de 1800 plugins contribuidos por la comunidad. Estos plugins cubren diferentes áreas, como la construcción, el despliegue y la automatización de proyectos. Los usuarios pueden personalizar sus pipelines CI/CD y ampliar la funcionalidad de Jenkins.

Los desarrolladores pueden crear plugins personalizados con la ayuda de la extensa documentación de Jenkins. También pueden crear plugins y añadirlos al directorio de Jenkins. Jenkins cuenta con una comunidad grande y activa que ayuda a construir plugins.

GitLab CI le permite conectarse/integrarse con servicios externos para mejorar su funcionalidad. Su biblioteca de plugins/extensiones es más pequeña en comparación con Jenkins, pero está creciendo. Como GitLab CI es parte de GitLab, viene con muchas características incorporadas.

Los usuarios pueden personalizar/configurar sus flujos de trabajo utilizando el archivo .gitlab-ci.yml. Puede especificar todos los trabajos, etapas y pasos.

Canalizaciones

Jenkins le permite utilizar tanto la sintaxis declarativa como la de scripted pipeline. Puede utilizar cualquiera de los dos enfoques con la interfaz de usuario web o un archivo Jenkinsfile. Este último es el más preferido. Puede almacenar sus pipelines como Jenkinsfiles dentro del repositorio que almacena el código fuente. La plataforma viene con una interfaz gráfica de usuario integrada basada en web donde puede supervisar y visualizar las ejecuciones.

GitLab CI tiene un .gitlab-ci.yml que define todos los pipelines. Este archivo de configuración basado en YML se almacena en el directorio raíz del proyecto. El gitlab-ci. yml es conocido por su sintaxis sencilla con una serie de comandos y palabras clave predefinidas que cubren las tareas de CI/CD más comunes. GitLab CI se integra con otras funciones de GitLab, permitiendo la gestión del código fuente, el seguimiento de incidencias, las revisiones de código, las solicitudes de fusión y mucho más.

Cómo instalar Jenkins

Antes de instalar Jenkins en su PC, necesita un entorno de ejecución Java (JRE). Descargue Java desde el sitio web oficial, dependiendo de su sistema operativo. Utilizaré Ubuntu para demostrar el proceso de instalación.

Si utiliza otro sistema operativo, consulte nuestro artículo sobre la instalación de Jenkins y siga los pasos indicados.

Para Ubuntu, siga estos pasos;

Paso 1: Compruebe que JRE está instalado. Ejecute este comando

java -version

Si está instalado, tendrá algo como esto

Java version

He instalado la versión «17.0.6», pero puede tener una versión superior.

Paso 2: Importe la clave GPG a su sistema utilizando este comando;

curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \

  /usr/share/keyrings/jenkins-keyring.asc > /dev/null

Paso 3: Añada el repositorio de software de Jenkins utilizando este comando;

echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \

  https://pkg.jenkins.io/debian-stable binary/ | sudo tee \

  /etc/apt/sources.list.d/jenkins.list > /dev/null

Paso 4: Actualice su sistema utilizando este comando:

sudo apt update

Paso 5: Instale Jenkins utilizando este comando:

sudo apt install jenkins -y

Paso 6: Compruebe si Jenkins está instalado utilizando este comando

sudo systemctl status jenkins

Si está instalado, verá algo similar a esto:

Jenkins version

Pulse ctrl z en su teclado para salir y pasar al siguiente paso.

Paso 7: Modifique el cortafuegos y Jenkins en su sistema. Utilice este comando

sudo ufw allow 8080

Paso 8: Compruebe el estado

sudo ufw status
Jenkins firewall

Paso9 : Si el estado indica«Inactivo» en el paso anterior, habilítelo utilizando este comando:

sudo ufw enable

Paso 10: Abra Jenkins en el navegador escribiendo esto en su navegador;

http://localhost:8080

Unlock Jenkins

Paso11 : Obtenga la «contraseña de administrador» ejecutando este comando

sudo cat /var/lib/jenkins/secrets/initialAdminPassword
Jenkins administrator password

Paso 12: Desbloquee Jenkins

Copie la contraseña que aparece en su terminal, péguela en el cuadro de diálogo «Contraseña de administrador» abierto en el paso diez y pulse ‘Continuar’.

Jenkins installation

La nueva ventana le pedirá que instale plugins. Como no necesita muchos plugins por el momento, puede elegir los predeterminados y pasar al siguiente paso

Paso 13: Cree su cuenta, ‘guardar y continuar’.

Jenkins admin

Paso 14: Establezca la configuración instantánea y comience a utilizar Jenkins

Jenkins is ready

Cómo instalar GitLab CI

GitLab CI es parte de GitLab. Para obtener GitLab CI, primero debe instalar GitLab Runner, el agente que ejecuta todos los trabajos antes de enviarlos a GitLab.

Utilizaré Ubuntu para demostrar el proceso. Si tiene otro sistema operativo, consulte la documentación oficial. Para Ubuntu, siga estos pasos;

Paso 1: Actualice y configure su sistema;

sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates tzdata perl

Puede configurar una solución de correo electrónico para enviar las actualizaciones u omitir este paso.

Paso 2: Añada el repositorio de paquetes de GitLab

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
Install GitLab

Paso3 : Configure su cuenta de GitLab.

Existen diferentes opciones para alojar GitLab. Siga las instrucciones en función de su elección.

Paso 4: Busque el nombre de host e inicie sesión. Pulse este comando en su terminal para obtener su contraseña;

/etc/gitlab/initial_root_password 

Opcional: Establezca las preferencias de comunicación para recibir actualizaciones del producto y noticias de GitLab.

Limitaciones de Jenkins

  • Jenkins puede ser complejo de configurar para proyectos grandes.
  • Si no está bien configurado, Jenkins puede ser vulnerable a ataques de seguridad.
  • Puede ser difícil escalar grandes proyectos utilizando Jenkins.
  • Jenkins puede consumir muchos recursos al ejecutar numerosas construcciones concurrentes.

Limitaciones de Gitlab CI

  • GitLab CI puede ser complejo para proyectos grandes.
  • Depende de GitLab.
  • La escalabilidad es un problema para proyectos grandes.
  • El ecosistema de plugins no es grande en comparación con Jenkins.

Opinión del autor

Tanto GitLab CI como Jenkins son herramientas fantásticas en el ciclo de vida del desarrollo de software. Me decantaré por Jenkins si quiero una plataforma más madura y un control total sobre la personalización. Por otro lado, me decantaré por GitLab CI por su interfaz de usuario y la necesidad de beneficiarme de la integración con GitLab.

Ahora creemos que puede distinguir las diferencias entre GitLab CI y Jenkins. A pesar de que las dos herramientas están diseñadas para realizar funciones similares, difieren en características y en cómo logran sus funciones. La elección entre ambas dependerá de la naturaleza del proyecto que tenga, de sus habilidades, gustos y preferencias.

Ahora puede echar un vistazo a estas plataformas de alojamiento de Jenkins.