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 demoConfigurar 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 demoConfigurar 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/cpPaso 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 BootSi tienes alguna pregunta o encuentras algún problema, no dudes en dejar un comentario. ¡Estoy aquí para ayudarte!