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 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 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ística | GitLab CI | Jenkins |
Código abierto | Sí | Sí |
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 usar | Puede resultar complicado para los principiantes. |
Alojamiento | Interno y externo | Interno y externo |
Requisitos previos | Node.JS, Git, Ruby, Go | Entorno 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
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:
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
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
Paso11 : Obtenga la «contraseña de administrador» ejecutando este comando
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
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’.
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’.
Paso 14: Establezca la configuración instantánea y comience a utilizar Jenkins
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
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.