Tabla de Contenidos

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 este enlace.

Cambiar [MI-PROYECTO], por el nombre del proyecto.

La configuración Maven necesaria es:

       <target name="hudson.maven.project.report"
	        depends="hudson.maven.project.install"
	        description="Realiza los informes del proyecto.">
 
		<echo message="Creando referencias JXR. Log en el fichero: maven_project_jxr.log" />
		<maven-hudson module=""
		              task="jxr:jxr"
		              description="Creando referencias JXR (mvn jxr:jxr)."
		              log.file="maven_project_jxr.log" />
 
		<echo message="Pasando JavaNCSS. Log en el fichero: maven_project_javancss.log" />
		<maven-hudson module=""
		              task="javancss:report"
		              description="Pasando JavaNCSS (mvn javancss:report)."
		              log.file="maven_project_javancss.log" />
 
		<echo message="Pasando CheckStyle. Log en el fichero: maven_project_checkstyle.log" />
		<maven-hudson module=""
		              task="checkstyle:checkstyle"
		              description="Pasando CheckStyle (mvn checkstyle:checkstyle)."
		              log.file="maven_project_checkstyle.log" />
 
		<echo message="Pasando FindBugs. Log en el fichero: maven_project_findbugs.log" />
		<maven-hudson module=""
		              task="findbugs:findbugs"
		              description="Pasando FindBugs (mvn findbugs:findbugs)."
		              log.file="maven_project_findbugs.log" />
 
		<echo message="Pasando JaCoCo - Cobertura. Log en el fichero: maven_project_cobertura.log" />
		<maven-hudson module=""
		              task="jacoco:report"
		              description="Pasando Cobertura (mvn jacoco:report)."
		              log.file="maven_project_cobertura.log" />
 
	</target>

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

    <plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-surefire-plugin</artifactId>
	<configuration>
		<skip>false</skip>
		<argLine>${argLine}</argLine>
		<testFailureIgnore>true</testFailureIgnore>
		<parallel>true</parallel>
		<threadCount>2</threadCount>
		<!-- "child first" classloading, like a web application-->
		<childDelegation>true</childDelegation>
		<suiteXmlFiles>
			<suiteXmlFile>src/test/testng/testng.xml</suiteXmlFile>
		</suiteXmlFiles>
	</configuration>
    </plugin>
   <plugin>
	<groupId>org.jacoco</groupId>
	<artifactId>jacoco-maven-plugin</artifactId>
	<executions>
		<execution>
			<goals>
				<goal>prepare-agent</goal>
			</goals>
		</execution>
		<execution>
			<id>report</id>
			<phase>prepare-package</phase>
			<goals>
				<goal>report</goal>
			</goals>
		</execution>
	</executions>
   </plugin>

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

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.

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.

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:

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:

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.

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.

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.