====== Plantilla Local ====== Recomendable para proyectos en los intervienen muchos desarrolladores al mismo tiempo. Para desarrollos en los que interviene una o dos personas, no es necesario. Esta plantilla nos permitirá configurar los proyectos que tenemos en nuestro local. Es interesante dar de alta en Jenkins nuestro proyecto local para asegurarnos, cada vez que nos actualicemos, que el código subido al SVN es estable, ya que en escenarios con muchos desarrolladores se puede dar el caso de que haya problemas que impidan que el proyecto despliegue. Comprobando el proyecto en Jenkins, antes de actualizar nuestro local, nos permitirá siempre hacer actualizaciones seguras que no nos impidan continuar nuestro desarrollo. Para dar de alta en Jenkins nuestro proyecto en local deberemos crear una nueva tarea e indicarle que debe usar la plantilla de local, marcando la opción **Copiar una Tarea existente** e indicando que use la plantilla **(Plantilla) -FW- Plantilla Local**. También debemos asegurarnos que nuestro proyecto tiene los "build files" acordes, para obtenerlos podemos descargarlos en: No abrais estos ficheros en otra ventana del navegador y despues copieis el contenido, eso probvoca fallos con el Javascript de estos ficheros. Hay que utilizar la opción de "Guardar enlace como ..." u opciones parecidas. Actualizar las **//tareas Ant//** desde {{:fdw2.0:fundeweb2.0:gt:jenkins:builders.zip|este enlace}}. Cambiar [MI-PROYECTO], por el nombre del proyecto. La configuración Maven necesaria es: * Si nuestro proyecto es Fundeweb 1.x debemos sustituir la tarea **hudson.maven.project.report** del fichero build.xml por el siguiente código: También deberemos modificar de la plantilla, donde está la generación de informes (abajo del todo) las rutas a los mismos de ** /target_report/ficheroDeInforme.xml ** a ** /target/ficheroDeInforme.xml ** * Debemos modificar el **pom.xml del proyecto principal** y actualizar la versión del // a 2.0.19 ( para FundeWeb 1.5 es la versión 1.5.19). * En el caso de que nuestra aplicación, sea una aplicación fundeweb de servicios, deberemos actualizar el **servicio-parent** a la versión 1.5.11 * **Si tenemos test deberemos añadir la suite de test al plugin de informes quedando así** en caso contrario no añadir el código de test: org.apache.maven.plugins maven-surefire-plugin false ${argLine} true true 2 true src/test/testng/testng.xml * Añadir el plugin para el análisis de la cobertura de código en el pom.xml del módulo web: org.jacoco jacoco-maven-plugin prepare-agent report prepare-package report El nombre de la tarea seguirá el formato **(GrupoDeTrabajo)_MiProyecto-Local**. Por ejemplo **(MNCS)_Apium-Local** {{ :fdw2.0:fundeweb2.0:gt:jenkins:jenkins_5.png }} Una vez creada la plantilla deberemos editarla para que contenga los valores de nuestro proyecto. Los campos a modificar los comentamos a continuación: ===== Detalles de la tarea y log de ejecuciones ===== Los primeros campos para ser editados son el nombre de la tarea llamado **Proyecto Nombre** y la **descripción**. El campo Proyecto Nombre admite sólo texto plano. El nombre de la tarea seguirá el formato **(GrupoDeTrabajo)_MiProyecto-Local**. Por ejemplo **(MNCS)_Apium-Local** El campo descripción permite introducir código HTML "seguro", lo cual es válido para una correcta descripción, pero no para utilizar toda la funcionalidad de HTML al completo. Una vez rellenados estos valores básicos debemos prestar atención al log de ejecuciones realizadas. Marcando el checkbox **Desechar ejecuciones antiguas** podremos definir cuantas ejecuciones queremos que conserve. Para definir este valor, entre otros parámetros, podemos indicar el número de días que se debe conservar una ejecución o el número máximo de ejecuciones a conservar. Por defecto, la plantilla tiene establecido que se mantengan las cinco últimas ejecuciones. {{ :fdw2.0:fundeweb2.0:gt:jenkins:jenkins_6.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 Local puede ser: * Notify Aborted (x) * Notify Failure (x) * Notify Not Build (x) * Notify Repeated Failure (x) * Team Domain: mncs (El nombre de tu sitio en slack) * Integration Token: 7lTrzkcHxxYY762xa2UpTPmc9u (Te lo proporcionará el propio Slack) * Project Channel: NombreGrupo-jenkins (El nombre que le hayas dado al canal para jenkins en slack) ===== Configuración SVN ===== En este apartado deberemos configurar el acceso desde Jenkins hacia nuestro repositorio SVN. Para este acceso haremos uso del usuario **hudson** por lo que es imprescindible que dicho usuario tenga permiso de lectura en nuestro repositorio. Por defecto sistemas habilita este acceso en cada repositorio nuevo, pero en caso de tener problemas de permisos debemos asegurarnos que el usuario hudson sí tiene acceso de lectura. Para que Jenkins pueda acceder a nuestro proyecto deberemos aportar la siguiente información: * **Indicar que el código fuente está en subversion**. * **Repository URL**: Url donde se encuentra nuestro código fuente. **[[https://svn.um.es/svn/APIUM/proyecto/fuentes/apium|https://svn.um.es/svn/APIUM/proyecto/fuentes/]]** * **Credentials**: Las credenciales del usuario hudson. * **Local module directory**: Donde se guardará nuestro proyecto en Jenkins, como norma "." * **Repository depth**: Infinity * **Check-out Strategy**: Use 'svn update' as much as possible. {{ :fdw2.0:fundeweb2.0:gt:jenkins:jenkins_8.png }} Si hemos introducido los datos de manera correcta, no aparecerán mensajes de aviso de error. ===== Ejecución de tarea Ant ===== En este punto indicaremos qué tareas Ant serán las que ejecute nuestra aplicación. Para el caso de un despliegue en local es suficiente ejecutar la tarea que genera analiza el código y recoge los informes. Esta tarea además lanzará los test que hayamos definido en nuestra aplicación, comprobará que despliega correctamente. {{ :fdw2.0:fundeweb2.0:gt:jenkins:jenkins_9.png }} La tarea Ant tiene una serie de propiedades para que tanto las aplicaciones Fundeweb 1 como las Fundeweb 2 puedan ejecutarse correctamente. **Estos valores no deben modificarse, deben mantenerse tal y como están definidos en la plantilla** ===== Postprocesamiento ===== Una vez que nuestro tarea ha acabado satisfactoriamente se realizarán todas las acciones que se encuentren en este apartado. Por defecto la plantilla incluye la publicación de los informes de los plugins generados y la notificación por correo al responsable o responsables (según indiquemos). Se recomienda utilizar Slack para las comunicaciones en lugar del correo electrónico. Añade adicionalmente un plugin visual para ver el estado de la aplicación. {{ :fdw2.0:fundeweb2.0:gt:jenkins:jenkins_10.png }} Es importante destacar que la ruta para recoger el análisis de nuestros ficheros, podemos encontrarla dentro de **Zona de trabajo** en el menú lateral izquierdo, en esa zona estarán todos los ficheros necesarios para el funcionamiento de Jenkins y deberemos encontrar la ruta hasta los ficheros de los informes. Por defecto la ruta establecida en la plantilla es la normal para la generación de los informes. No obstante en algunos proyectos se generan en otra estructura de directorios por lo que tendremos que buscar dónde se encuentran y modificar dicha ruta.