====== Plantilla Preproducción ======
La creación de la tarea de preproducción para nuestro proyecto es similar a la creación de la [[fdw2.0:fundeweb2.0:gt:jenkins:plantilla_local|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 [[gt:plantilla_local#plantilla_local|tarea local]] salvo que la plantilla que debemos escoger es **(Plantilla) -FW- Plantilla-Preproduccion**.
El nombre de la tarea seguirá el formato **(GrupoDeTrabajo)_MiProyecto-Preproduccion**. Por ejemplo **(MNCS)_Apium-Preproduccion**
Si no tenemos configurado nuestro proyecto local también deberemos asegurarnos que nuestro proyecto tiene los "build files" acordes, para obtenerlos podemos descargarlos en {{:fdw2.0:fundeweb2.0:gt:jenkins:builders.zip|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 [[mda:gc:mda-pr-1.0-gc-establecer_el_sistema_de_gestion_de_configuracion#estructura_de_directorios_del_proyecto|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**
===== Variables de entrada =====
Esta tarea requiere que le introduzcamos como parámetro de entrada la revisión de código SVN que queremos que se despliegue en el servidor, para ello aparece marcado el check **Esta ejecución debe parametrizarse** lo cual nos permitirá añadir parámetros a la ejecución de nuestra tarea.
Para esta plantilla hemos añadido un parámetro llamado **Rev** que recogerá la revisión SVN que queremos aplicar (numérica). Le hemos dado a su vez como valor por defecto **HEAD** para que coja la última.
{{ :fdw2.0:fundeweb2.0:gt:jenkins:jenkins_11.png |}}
===== Notificaciones Slack =====
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.
{{ :fdw2.0:fundeweb2.0:gt:jenkins:jenkins_7.png |}}
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 Failure (x)
* Notify Not Build (x)
* Notify Success (x)
* Notify Repeated Failure (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)
===== Configuración SVN =====
Para poder desplegar nuestro proyecto en preproducción, deberemos dar de alta en nuestra tarea dos accesos al SVN. El primer acceso será para acceder al **trunk** de nuestra aplicación y descargarse el código fuente que queremos compilar. El segundo acceso será al repositorio SVN de nuestro proyecto en preproducción que será donde desplegaremos el código compilado.
**Configuración SVN código fuente**
Para configurar el acceso a nuestro repositorio de código fuente bastará con indicar la URL del mismo en la variable **Repository URL**. Si vemos la plantilla, el valor de ese campo es **[Url del respositorio de fuentes]@${Rev}**. La terminación **@${Rev}** indica al servidor SVN que debe coger el valor de la variable Rev, por lo tanto deberemos poner nuestra URL y mantener esa definición de la variable.
Un ejemplo:
Repository URL: https://svn.um.es/svn/MIPROYECTO/proyecto/fuentes/miproyecto@${Rev}
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 preproducció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_test/miproyecto
Por último, debemos modificar el campo **Local module directory** "nombreProyecto-preproduccion" por el nombre de nuestro proyecto más la terminación "-preproduccion".
{{ :fdw2.0:fundeweb2.0:gt:jenkins:jenkins_15.png |}}
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 preproducción.
==== Ejecución de tarea Ant ====
Para poder desplegar correctamente en preproduccion, 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 un Tag** haciendo uso de la tarea: **hudson.generate.tag.preproduccion**.
El esquema de ejecución de tareas Ant quedaría así:
* **hudson.synchronize.application.preproduccion**: Empaqueta el código fuente y despliega en el servidor de preproducción. En la plantilla está configurado que tras acabar mande un redeploy para actualizar los cambios en el servidor.
* **hudson.generate.tag.preproduccion**:Genera un Tag en el repostiorio SVN en la URL indicada en las propiedades. Para poder modificar las propiedades debemos pulsar el botón **Avanzado...** situado a la derecha de la tarea Ant.
* **ruta.fuente.tag**: Es la ruta SVN del trunk de nuestro proyecto. Por ejemplo: **https://svn.um.es/svn/APIUM/proyecto/fuentes/apium**
* **ruta.destino.tag**: Es la ruta SVN de la carpeta donde guardaremos los Tags. Por ejemplo: **https://svn.um.es/svn/APIUM/tags**
* **revision**: Número de revisión sobre la que hacer el Tag.
* **hudson.maven.project.report**: Genera los informes de calidad del software.
{{ :fdw2.0:fundeweb2.0:gt:jenkins:jenkins_16.png |}}
Finalmente las tareas de **postprocesamiento** las tendremos que configurar de igual manera que en la [[:fdw2.0:fundeweb2.0:gt:jenkins:plantilla_local#postprocesamiento|plantilla local]]