Autodespliegue con jenkins

0
8588

En este tutorial veremos como configurar jenkins para realizar auto-despliegues.

Índice de contenidos

1. Introducción

Me surgía la necesidad de contaros cómo se realiza la autoinstalación de una aplicación java a través de la ejecución de un script, dentro de un paso de Jenkins. Existe un plugin (Deploy Plugin) que realiza el despliegue de las aplicaciones, pero hemos tenido la necesidad de hacerlo manualmente y aquí os muestro cómo.

Lo encuentro muy útil, muy sencillo y muy cómodo.

2. Entorno

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil MacBook Pro Retina 15′ (2.2 Ghz Intel Core I7, 16GB DDR3).
  • Sistema Operativo: Mac OS Yosemite 10.10
  • Entorno de desarrollo: jenkins ver.2.7.4

3. Instalación plugin

El primer paso será la instalación del plugin necesario para poder configurar el auto-despliegue en jenkins.

– Jenkins Post build task

4. Configurar plugin

Para configurar este plugin, simplemente, tendremos que ir al final de la configuración de jenkins de nuestro proyecto, sección “Acciones para ejecutar después”. Abrir el desplegable “Añadir una Acción” y seleccionar “Post Build Task”

Ahora configuramos este plugin, para ello, añadimos en el apartado «script», el path del script que realiza el despliegue.

5. El script

Generamos un script start.sh, en el directorio que hemos indicado en el paso anterior.

start.sh

   #!/bin/bash
  echo ".-Deployment Process-."
   
  numProcess=`ps -ef | grep services-$1.jar | grep -v grep | wc -l`

  # solo ejecuta kill si el proceso esta arrancado
  if [ $numProcess -ne 0 ]; then
     echo "Stopping Beauty..."
     ps -ef | grep nombreApp-$1.jar | grep -v grep | awk '{print $2}' | xargs kill -9
  fi

  if [ $? == 0 ]; then
     echo "Beauty stopped."
     if [ -f services-$1.jar ]; then
        nohup java -jar services-$1.jar --spring.config.location=core/application.yml,service/application.yml > service.log &
        if [ $? == 0 ]; then
           echo "Installing jar..."
           sleep 45
           cat service.log
       	 echo "-------------------------------------------------------------------------------------------------------------"
           echo "DEPLOYMENT SUCCESS"
           echo "-------------------------------------------------------------------------------------------------------------"
           exit 0

        else
           echo "ERROR while trying to deploy service-$1.jar"

        fi
     else
       echo "services-$1.jar don't exist."
     fi
  else
    echo "ERROR while trying to stop the application."
  fi
  exit 1

  

En este directorio tenemos el archivo services-.XXXX.jar y el script start.sh, en la carpeta “core” están los archivos de configuración de core y en la carpeta “services” los de services.
El script start.sh ejecuta los siguientes pasos:

  • Detiene la aplicación services-XXXX.jar
  • Comprueba la existencia de los ficheros de configuración y el fichero jar
  • Despliega el fichero jar
  • Espera 45 segundos para darle tiempo a que se despliegue, que genere el log y así poder mostrarlo en la consola de jenkins.
  • Si todo va bien, muestra el mensaje DEPLOYMENT SUCCESS, si no, muestra el error correspondiente.

Nota: XXXX es la versión de la aplicación a desplegar.

6. Referencias

  • Post Build Task plugin: https://wiki.jenkins-ci.org/display/JENKINS/Post+build+task

7. Conclusiones

Hemos conseguido configurar el despliegue automático de nuestra aplicación, desde ahora, una vez actualizado el código en el repositorio, se construirá la build y al terminar se lanzará la instalación de la aplicación. ¿No me digas que no es cómodo?

¡¡¡Me encanta!!!

Un saludo.

Kike

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad