CodeGym /Cursos /Módulo 5. Spring /Lección 143: Herramientas principales para CI/CD (Jenkins...

Lección 143: Herramientas principales para CI/CD (Jenkins, GitLab CI, CircleCI)

Módulo 5. Spring
Nivel 22 , Lección 2
Disponible

Los procesos CI/CD no aparecen por arte de magia desde el aire (como a veces nos gustaría). Para eso existen herramientas potentes que se encargan de todo el trabajo "sucio": la automatización de compilaciones, pruebas y despliegues. Hoy veremos cómo funcionan las herramientas más populares de CI/CD: Jenkins, GitLab CI y CircleCI. Además de estudiar sus capacidades, veremos cómo elegir la herramienta adecuada para vuestros proyectos.


Jenkins: el dinosaurio de la automatización que aún está en juego

Jenkins —es una herramienta open-source de automatización que se puede personalizar literalmente para cualquier necesidad. Si Jenkins fuera un superhéroe, su mantra sería "Yo estuve aquí antes que nadie". Jenkins apareció allá por 2005 con el nombre Hudson y a lo largo de los años se ha ganado el amor y el odio de los desarrolladores. Es potente, flexible, pero requiere paciencia y atención.

Esto es lo que puede hacer:

  • Creación de jobs: tareas separadas que realizan compilación, pruebas y despliegue.
  • Pipelines: posibilidad de componer secuencias complejas de tareas. Jenkins soporta pipelines declarativos y scripted.
  • Gestión de dependencias: integración con herramientas como Maven, Gradle, Docker.
  • Flexibilidad: más de 1500 plugins (sí, nosotros también nos sorprendimos) para conectar Jenkins con lo que quieras — SCM (por ejemplo, Git), nubes (AWS, Azure), sistemas de monitorización (Prometheus).

Ejemplo de pipeline en Jenkins


pipeline {
    agent any
    stages {
        stage('Compilación') {
            steps {
                sh 'mvn clean package'
            }
        }
        stage('Pruebas') {
            steps {
                sh 'mvn test'
            }
        }
        stage('Despliegue') {
            steps {
                sh 'echo "Deploying to Production!"'
            }
        }
    }
}

Jenkins es ideal para proyectos donde se necesita una enorme personalización o para empresas que llevan tiempo usando esta herramienta. Pero preparaos para invertir tiempo en configuración y en aprender a manejar muchos plugins.


GitLab CI: automatización directamente desde tu repositorio

Si usas GitLab, seguro que conoces su sistema CI/CD integrado. GitLab CI permite automatizar fácilmente todo, desde escribir código hasta desplegarlo, sin necesidad de instalar herramientas separadas.

Características de GitLab CI

  • Integración: GitLab CI es parte de GitLab. No necesitas montar un servidor aparte, como con Jenkins.
  • Uso de YAML: los pipelines se crean con archivos YAML (.gitlab-ci.yml) que se guardan en el repositorio.
  • Runners automáticos: GitLab ofrece sus runners (máquinas virtuales) para ejecutar pipelines. También puedes usar runners propios.
  • Contenerización: soporte para Docker listo para usar.

Ejemplo de .gitlab-ci.yml


stages:
  - build
  - test
  - deploy

build:
  stage: build
  script:
    - mvn clean package

test:
  stage: test
  script:
    - mvn test

deploy:
  stage: deploy
  script:
    - echo "Deploying application..."

GitLab CI encaja perfecto en proyectos ya alojados en GitLab. Si tenéis un equipo pequeño o queréis poner en marcha CI/CD rápido y sin complicaciones, es una gran opción.


CircleCI: el maestro CI/CD en la nube

CircleCI —es un servicio en la nube para automatización, que apuesta por la simplicidad y la integración con Docker y GitHub. Es menos de "flexibilidad como Jenkins" y más de "ligereza como una pluma".

Características de CircleCI

  • Nube: no hace falta mantener servidores, todo funciona en la nube.
  • Soporte Docker: CircleCI funciona genial con contenedores, puedes aislar el entorno en un par de líneas.
  • Configuración vía YAML: como en GitLab CI, los pipelines se configuran en YAML.
  • Integración con GitHub: CircleCI hace muy buena pareja con GitHub y se sincroniza con facilidad.

Ejemplo de .circleci/config.yml


version: 2.1
jobs:
  build:
    docker:
      - image: circleci/openjdk:11-jdk
    steps:
      - checkout
      - run:
          name: Build with Maven
          command: mvn clean package
  test:
    docker:
      - image: circleci/openjdk:11-jdk
    steps:
      - checkout
      - run:
          name: Run Tests
          command: mvn test
workflows:
  version: 2
  build-and-test:
    jobs:
      - build
      - test

Si quieres empezar rápido con CI/CD y usas GitHub, CircleCI puede ser una excelente opción. Especialmente para proyectos desarrollados con contenedores.


Comparación entre Jenkins, GitLab CI y CircleCI

Característica Jenkins GitLab CI CircleCI
Instalación Local Integrado en GitLab En la nube (SaaS)
Facilidad de uso Media (muchas configuraciones) Alta (integración con Git) Alta (plantillas listas)
Rendimiento Depende de la configuración Rápido Rápido
Precio Gratis Gratis/Pago Gratis/Pago
Soporte Docker A través de plugins "Listo para usar" "Listo para usar"
Flexibilidad Muy alta Media Media

¿Cómo elegir la herramienta para CI/CD?

La elección depende de vuestras necesidades:

  1. Si estáis en una empresa grande y necesitáis una herramienta super-flexible, elegid Jenkins.
  2. Si ya usáis GitLab y queréis implantar CI/CD rápidamente — GitLab CI es vuestra opción.
  3. Si vuestro proyecto está en la nube y valoráis la simplicidad de configuración — probad CircleCI.

Por cierto, nada impide combinar herramientas. Por ejemplo, usar Jenkins para pipelines complejos y GitLab CI para checks rápidos en ramas.

Consejo:
Antes de desplegar Jenkins, pensad si realmente lo necesitáis. Tendréis que convertiros en su administrador, y eso es como conseguir otro "trabajo a media jornada".
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION