|

Guía Completa: Automatización de Construcción y Despliegue de una Aplicación Java Spring con Jenkins en tu Ubuntu Server

Introducción

En esta guía, te llevaré paso a paso por el proceso de instalación, configuración y automatización de la construcción y despliegue de una aplicación Java Spring usando Jenkins. Al final de esta guía, tendrás un entorno de integración continua (CI) y despliegue continuo (CD) completamente funcional.


Paso 1: Preparar el Entorno en el Servidor

Instalar Java

Primero, asegúrate de que Java esté instalado en tu servidor Ubuntu. Vamos a instalar OpenJDK 17.

sudo apt update
sudo apt install openjdk-17-jdk -y

Verifica la instalación:

java -version

Instalar Maven

Jenkins utilizará Maven para construir tu proyecto.

sudo apt install maven -y

Paso 2: Instalar Jenkins

Agregar el Repositorio Jenkins y su Clave GPG

curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
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

Instalar Jenkins

sudo apt update
sudo apt install jenkins -y

Iniciar y Habilitar Jenkins

sudo systemctl start jenkins
sudo systemctl enable jenkins

Acceder a Jenkins

Abre tu navegador y visita http://:8080. Obtén la contraseña inicial:

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Configura tu usuario administrador y completa la configuración inicial.


Paso 3: Configurar Jenkins para Construir tu Proyecto

Crear un Nuevo Proyecto

Abre Jenkins y selecciona "New Item".
Ingresa un nombre para el proyecto y selecciona "Freestyle project".

Configurar el Repositorio Git

En "Source Code Management", selecciona "Git".
Ingresa la URL de tu repositorio y, si es necesario, agrega las credenciales.

Configurar el Script de Construcción

En la sección «Build», añade un paso «Execute shell» y usa el siguiente script:

git pull origin master
mvn clean package

Paso 4: Configurar Despliegue Automático

Crear un Servicio systemd para la Aplicación

Crea el archivo de servicio:

sudo nano /etc/systemd/system/demo.service

Agrega la configuración:

[Unit]
Description=Demo Spring Boot Application
After=syslog.target

[Service]
User=tu usuario
ExecStart=/usr/bin/java -jar ruta_del_proyecto/nombre_jar
SuccessExitStatus=143
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=demo

[Install]
WantedBy=multi-user.target

Habilita y arranca el servicio:

sudo systemctl enable demo
sudo systemctl start demo

Configurar el Despliegue en Jenkins

En "Post-build Actions", selecciona "Execute shell".

Agrega el siguiente script:

sudo systemctl stop demo
sudo cp target/nombre_del_jar ruta_del_proyecto
sudo systemctl start demo
sudo systemctl status demo

Configurar Permisos de Sudo

Edita el archivo sudoers:

sudo visudo

Agrega los permisos necesarios:

jenkins ALL=(ALL) NOPASSWD: /bin/systemctl stop demo, /bin/systemctl start demo, /bin/systemctl status demo, /bin/cp

Paso 5: Configurar Webhook para Integración Continua con GitHub

Configurar el Webhook en GitHub

Ve a la configuración de tu repositorio en GitHub.
Selecciona "Webhooks" y haz clic en "Add webhook".
En "Payload URL", ingresa http://<tu_ip_servidor>:8080/github-webhook/.
Selecciona "Content type" como application/json.
En "Which events would you like to trigger this webhook?", selecciona "Just the push event".
Haz clic en "Add webhook".

Configurar el Disparador en Jenkins

Abre tu proyecto en Jenkins y haz clic en "Configurar".
En la sección "Build Triggers", selecciona "GitHub hook trigger for GITScm polling".
Guarda la configuración.

Paso 6: Probar la Configuración

Inicia una construcción manual en Jenkins.
Verifica que la aplicación se despliega correctamente.
Realiza un cambio en tu repositorio GitHub y verifica que Jenkins construye y despliega automáticamente.

¡Felicidades! Has configurado exitosamente un entorno de integración continua y despliegue continuo para tu aplicación Java Spring utilizando Jenkins. Ahora, cada vez que hagas un cambio en tu código, Jenkins construirá y desplegará automáticamente tu aplicación, asegurando un proceso de desarrollo más eficiente y confiable.
Recursos Adicionales

Documentación de Jenkins
Guía de Spring Boot

Si tienes alguna pregunta o encuentras algún problema, no dudes en dejar un comentario. ¡Estoy aquí para ayudarte!

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *