En este tutorial veremos como configurar jenkins para realizar auto-despliegues.
Índice de contenidos
- 1. Introducción
- 2. Entorno
- 3. Instalar plugin
- 4. Configurar plugin
- 5. El script
- 6. Referencias
- 7. Conclusiones
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.
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