Plantilla producción

La creación de la tarea de producción para nuestro proyecto es similar a la creación de la tarea local pero tiene diferencias importantes para poder realizar el despliegue en el servidor.

A la hora de crear la plantilla, asignarle título, descripción y gestión de log de ejecuciones y notificaciones Slack; lo haremos de igual manera que se hace en la creación de la tarea local salvo que la plantilla que debemos escoger es (Plantilla) -FW- Plantilla-Producción.

El nombre de la tarea seguirá el formato (GrupoDeTrabajo)_MiProyecto-Produccion. Por ejemplo (MNCS)_Apium-Produccion

Si no tenemos configurado nuestro proyecto local también deberemos asegurarnos que nuestro proyecto tiene los “build files” acordes, para obtenerlos podemos descargarlos en este enlace (Importante: Cambiar [MIPROYECTO]). En caso de haber configurado ya en Jenkins nuestro proyecto local este paso no es necesario.

Para poder ejecutar esta tarea es importante tener la estructura de directorios indicada por Medea asegurando que el usuario Hudson tiene acceso a ella. Básicamente debemos añadir una carpeta llamada Tags al mismo nivel que la carpeta Versiones.

También hay que asegurarse que, si existen versiones previas, sigan el formato establecido de tres dígitos X.X.X en caso contrario se deberán renombrar para que cumplan el formato.

Todas las aplicaciones que deseen desplegar en producción deberán haber sido probadas previamente en test. Por este motivo nuestra tarea Jenkins para el despliegue en producción sólo acepta como entrada un Tag. Este Tag habrá sido creado en la ejecución de la tarea de despliegue en preproducción de Jenkins.

Al empezar la ejecución de nuestra tarea se nos mostrará un selector, ordenado de más reciente a más antiguo, que nos permitirá elegir el Tag que queremos lanzar a producción.

En la plantilla viene preestablecida la variable que se utilizará para recuperar dicho Tag, pero debemos realizar una pequeña modificación para que se adapte a nuestro repositorio. Para ello modificamos el valor Repository URL a la url del SVN donde se encuentra nuestra carpeta de Tags. Un ejemplo sería https://svn.um.es/svn/APIUM/Tags

A su vez, como tras esta ejecución se creará una nueva versión, será necesaria otra variable para indicar qué tipo de versión se va a crear. Una nueva versión, una revisión o un fix. Esta variable ya viene correctamente configurada en la plantilla.

Si en nuestro grupo de trabajo utilizamos el cliente de mensajería Slack para comunicarnos. Podemos hacer que las compilaciones de nuestro proyecto se publiquen en el canal que deseemos de manera que cualquiera subscrito a ese canal pueda estar al tanto de cualquier cambio.

Podremos indicar qué notificaciones debe mostrar en nuestro canal, así como el canal en el que queremos que se publique. Es de especial importancia el parámetro Integration Toket que habrá que generar desde Slack para poder comunicar Jenkins con nuestro chat.

En este punto la plantilla por defecto no incluye ningún valor, pero un ejemplo con valores adecuados para una tarea en Preproducción puede ser:

  • Notify Build Start (x)
  • Notify Aborted (x)
  • Notify Failure (x)
  • Notify Not Build (x)
  • Notify Success (x)
  • Include Test Summary (x)
  • Team Domain: mncs (El nombre de tu sitio en slack)
  • Integration Token: 7lTrzkcHxxYY762xa2UpTPmc9u (Te lo proporcionará el propio Slack)
  • Project Channel: jenkins (El nombre que le hayas dado al canal para jenkins en slack)

Para poder desplegar nuestro proyecto en producción, deberemos dar de alta en nuestra tarea dos accesos al SVN. El primer acceso será para acceder al Tag de nuestra aplicación seleccionado en la variable anteriormente dada de alta. El segundo acceso será al repositorio SVN de nuestro proyecto en producción que será donde desplegaremos el código compilado.

Configuración SVN código fuente

Para configurar el acceso al Tag que queremos desplegar en producción deberemos modificar la variable Repository URL. Si vemos la plantilla, el valor de ese campo es [Url del respositorio de tags]${Tag}. La terminación ${Tag} indica al servidor SVN que debe leer el Tag que le estamos pasando en la variable.

   Repository URL: https://svn.um.es/svn/MIPROYECTO/Tags/${Tag}

También debemos sustituir en el campo Local module directory “nombreProyecto” por el nombre de nuestro proyecto.

Una vez configurado el acceso a nuestro repositorio de código fuente, debemos dar de alta el acceso al repositorio del servidor de producción donde queremos desplegar.

Para ello indicamos la URL de acceso a nuestro proyecto en el servidor

   Repository URL: https://svn.um.es/svn/MIRPOYECTO/web_prod/miproyecto

Por último debemos modificar el campo Local module directory “nombreProyecto-produccion” por el nombre de nuestro proyecto más la terminación “-produccion”.

El resto de las opciones las dejaremos tal cual vienen en la plantilla.

Tras la realización de estos pasos, cuando nuestra tarea se ejecute, en nuestra Zona de trabajo aparecerán dos carpetas, una representará nuestro proyecto de código fuente y la otra nuestro proyecto en el servidor de producción.

Ejecución de tarea Ant

Para poder desplegar correctamente en producción, haremos uso de tres tareas Ant.

En las tareas local y desarrollo, no era necesario modificar las tareas Ant, sin embargo en preproducción y producción sí es necesario modificarlas. Lee con atención el apartado siguiente.

En este caso hay una diferencia importante con respecto a las plantillas anteriores. Tras compilar y probar correctamente el código, debemos generar una Versión ya que es un despliegue real en producción. Para ello hacemos uso de la propiedad TipoVersion, la propiedad tagSeleccionado y la tarea hudson.generate.version.produccion.

El esquema de ejecución de tareas Ant quedaría así:

  • hudson.synchronize.application.produccion: Empaqueta el código fuente y despliega en el servidor de producción. En la plantilla está configurado que tras acabar mande un redeploy para actualizar los cambios en el servidor.
  • hudson.generate.version.produccion:Genera un Tag en el repostiorio SVN en la URL indicada en las propiedades:
    • ruta.origen.tag: Ruta del SVN donde se encontrarán los tags de nuestra aplicación. Por ejemplo: https://svn.um.es/svn/APIUM/Tags
    • ruta.destino.version: Ruta del SVN donde guardaremos las versiones creadas. Por ejemplo: https://svn.um.es/svn/APIUM/versiones
    • tagSeleccionado: El tag que vamos a desplegar en producción.
    • TipoVersion: El tipo de versión que vamos a generar: Versión, Revisión o Fix
  • hudson.maven.project.report: Genera los informes de calidad del software.

Finalmente las tareas de postprocesamiento las tendremos que configurar de igual manera que en la plantilla local

  • fdw2.0/fundeweb2.0/gt/plantilla_produccion.txt
  • Última modificación: 07/11/2017 10:46
  • (editor externo)