Automatización de Despliegue de SpringBoot con Jenkins

Introducción a la Integración Continua con Jenkins

Jenkins es una herramianta popular de CI/CD. ¿Qué significa CI/CD? Los conceptos centrales de CI/CD se pueden resumir en tres puntos:

  • Integración Continua
  • Entrega Continua
  • Despliegue Continuo

En esencia, se trata de un flujo de trabajo que combina diferentes ramas de código en la rama principal, empaquetando, compilando, probando y desplegando automáticamente en el entorno de producción.

En este tutorial, demostraremos cómo automatizar el despliegue de un proyecto SpringBoot utilizando Jenkins en un servidor de Alibaba Cloud. Primero, necesitarás crear una instancia en la plataforma de Alibaba Cloud (ofrecen periodos de prueba gratuitos).

Configuración del Servidor

Una vez creada la instancia, accede a ella y selecciona tu ID de instancia. Luego, configura las reglas del grupo de seguridad para permitir el acceso externo a todos los puertos necesarios:

  1. Selecciona la lista de grupos de seguridad
  2. Haz clic en "Configurar reglas"

Si no configuras las reglas de acceso a los puertos, no podrás acceder a ellos desde fuera de la red.

Instalación de Jenkins

Descarga Jenkins desde su sitio oficial: https://www.jenkins.io/download/. Conectado a tu servidor, ejecuta:

wget https://get.jenkins.io/war-stable/2.387.3/jenkins.war

Después de la descarga, inicia Jenkins con el siguiente comando:

java -jar jenkins.war --httpPort=8080

Accede a http://tu-ip:8080 en tu navegador. Verás la pantalla de instalación inicial. Ingresa la contraseña generada para desbloquear Jenkins. Luego, instala los plugins recomendados y crea un usuario. Refresca la página e inicia sesión con tu nueva cuenta.

Instalación de Plugins Esenciales

Después del inicio exitoso, instala tres plugins fundamentales:

  1. Maven Integration: Herramienta de construcción con Maven
  2. Publish Over SSH: Permite transferir archivos empaquetados desde Jenkins al servidor de aplicaciones
  3. Gitee: Facilita el trabajo con repositorios de Gitee

Ubica estos plugins en la sección de gestión de plugins de Jenkins, instálalos y reinicia el sistema.

Configuración del Entorno Java

Instala Java 11 usando el administrador de paquetes de tu distribución:

yum install -y java-11-openjdk

El directorio de instalación estará en /usr/lib/jvm. Navega a este directorio para identificar el nombre exacto del directorio de JDK 11. Luego, configura la variable de entorno JAVA_HOME:

vi /etc/profile

Agrega las siguientes líneas al archivo:

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.19.0.7-1.el7_9.x86_64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

Aplica los cambios con:

source /etc/profile

Verifica la instalación ejecutando:

java -version

Instalación de Maven

Descarga Maven con el siguiente comando:

wget https://dlcdn.apache.org/maven/maven-3/3.9.2/binaries/apache-maven-3.9.2-bin.tar.gz

Extrae el archivo descargdao para completar la instalación.

Configuración de Herramientas en Jenkins

Navega a la configuración global de herramientas en Jenkins para configurar Java, Git y Maven:

  1. Configura la ruta del JDK
  2. Configura Git (asegúrate de haberlo instalado en el servidor con yum install git)
  3. Configura la ruta de instalación de Maven

Configuración de Conexiones SSH y Repositorios

Busca la configuración de Publish over SSH y añade un nuevo servidor SSH:

  • Dirección IP del servidor
  • Nombre de usuario
  • Contraseña

Luego, configura el acceso a tu repositorio de Gitee:

  1. Ve a "Agregar > Jenkins"
  2. Ingresa tu nombre de usuario y contraseña de Gitee

Creación de un Nuevo Trabajo en Jenkins

Selecciona "Proyecto Maven" y proporciona un nombre para tu trabajo. Configura:

  1. Dirección del repositorio de Gitee
  2. Cuenta de Gitee a utilizar
  3. Rama del proyecto
  4. Programación de builds (si es necesario)
  5. Comandos de construcción

Configuración del Despliegue

Configura la transferencia de archivos y el comando de inicio:

#!/bin/bash

# Configuración de Java
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.19.0.7-1.el7_9.x86_64
export PATH=$JAVA_HOME/bin:$PATH

# Rutas
APP_DIR=/opt/data
JAR_FILE=mi-aplicacion-0.0.1-SNAPSHOT.jar

# Detener aplicación existente
PID=$(ps -ef | grep $JAR_FILE | grep -v grep | awk '{print $2}')
if [ -n "$PID" ]; then
    kill -9 $PID
fi

# Iniciar nueva aplicación
nohup java -jar $APP_DIR/$JAR_FILE > $APP_DIR/salida.log 2>&1 &

# Verificar inicio
sleep 30
tail -n 50 $APP_DIR/salida.log

En el servidor, crea el directorio /opt/data y guarda el script anterior como deploy.sh con permisos de ejecución:

chmod +x /opt/data/deploy.sh

Primer Build Manual

Haz clic en "Aplicar y guardar", luego en "Construir ahora". Verifica el resultado en la consola de Jenkins. Si ves "BUILD SUCCESS", el despliegue fue exitoso.

Puedes acceder a tu aplicación en http://tu-ip-publica:puerto/ruta para verificar su funcionamiento.

Configuración de Automatización con Webhooks

Para habilitar builds automáticos al subir cambios, configura un webhook en Gitee:

  1. En tu proyecto de Gitee, ve a la pestaña "Administración"
  2. Selecciona "WebHooks" en el menú izquierdo
  3. Haz clic en "Agregar WebHook"
  4. Pega la URL de Jankins con el formato: http://usuario-jenkins:contrasena-jenkins@ip-publica:puerto/githook/notify
  5. Haz clic en "Probar" para verificar la configuración

Si recibes un mensaje de confirmación, el webhook está correctamente configurado. Ahora, cada vez que subas cambios al repositorio, Jenkins iniciará automáticamente un nuevo proceso de construcción y despliegue.

Etiquetas: Jenkins SpringBoot CI/CD automatización despliegue

Publicado el 6-30 20:35