Manual de integración continua de grails usando jenkins

En este manual se describe el proceso de configuración y despliegue de una aplicación escrita en grails framework usando jenkins y tomcat como webserver.

Configuración de tomcat

Para la integración de las aplicaciones es necesario realizar las siguientes configuraciones previas en tomcat:

Habilitar usuario para despliegue:

Es necesario habilitar un usuario que usará jenkins para el despliegue del war de la aplicación.

  • Editar el archivo conf/tomcat-users.xml y agregar las siguientes líneas dentro del tag <tomcat-users>:
<role rolename="manager-script"/>
<role rolename="admin-gui"/>
<user username="USUARIO" password="CONTRASEÑA" roles="manager-script, admin-gui"/>

Donde:

    • USUARIO: Es el usuario que se usará para realizar el despliegue
    • CONTRASEÑA: Es la contraseña a usar para el despliegue.
  • Editar el archivo webapps/manager/META-INF/context.xml y comentar la linea:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1">

Configuración de jenkins

Configuraciones previas:

Es necesario contar con los siguientes plugins instalados:

  • Git plugin.
  • Deploy to container Plugin.
  • Copy Artifact Plugin.

Ir a Jenkins -> Manage Jenkins -> Global Tools Configuration y realizar las siguientes configuraciones:

En la sección JDK configurar el jdk 8 a usar para compilar el proyecto:

Proyectos:

El pipeline se dividirá en 2 tareas:

  • PROYECTO_build. Encargado de clonar el código y construirlo.
  • PROYECTO_DEPLOY: Encargado de desplegar proyecto generado por la tarea anterior.

PROYECTO_build:

  • Crear un item nuevo de tipo Freestyle con el nombre PROYECTO_build:

  • En la sección de general elegir la versión de jdk a utilizar:

  • En la sección SOURCE MANAGMENT configurar el acceso al repositorio de la aplicación:

Repository URL: La url de tu proyecto

Credentials: Usuario y contraseña con privilegios para clonar proyecto.

Branch: */master

  • En la sección Build Triggers elegir Poll SCM  y en schedule escribir * * * * *

  • En la sección Build agregar un paso “execute shell” con el siguiente comando:

./grailsw.sh prod war

  • En la sección Post Build agregar un paso Archive the artifacts y especificar:

**/*.war

  • Hacer click en save.

PROYECTO_deploy:

  • Crear un item nuevo de tipo Freestyle con el nombre PROYECTO_deploy:

  • En la sección Build Triggers seleccionar Build after other projects are built y proporcionar el nombre del nombre del proyecto de build:

PROYECTO_build

  • En la sección Build agregar un paso Copy artifacts from another project con los siguientes datos:
    • Project name: PROYECTO_build
    • Wich build: Latest successful build
    • Artifacts to copy: **/*.war

  • En la sección Post-build Actions agregar un paso Deploy war/ear to a container con los siguientes datos:
    • WAR/EAR files: **/*.war
    • Containers: Tomcat 8x Remote.
    • Nota. En esta sección se usan las credenciales configuradas en el archivo tomcat-users.xml de tomcat.

  • Hacer click en save.

Una vez concluida la configuración el proyecto se desplegará cada vez que exista algún cambio en el branch master del repositorio git.