Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
22/01/10 S lide 1www.heinsohn.com.co
INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNT
RUNT22/01/10 Slide 2
AGENDA
• Breve Introducción.
• Instalación.
• Configuración de un proyecto básico.
• Plugins
– JUnit.
– Emma.
– FindBugs.
– SONAR.
• Hudson en RUNT.
– Implementación.
– Problemas y retos.
– Recomendaciones.
• Referencias.
RUNT22/01/10 Slide 3
AGENDA
• Breve Introducción.
• Instalación.
• Configuración de un proyecto básico.
• Plugins
– JUnit.
– Emma.
– FindBugs.
– SONAR.
• Hudson en RUNT.
– Implementación.
– Problemas y retos.
– Recomendaciones.
• Referencias.
RUNT22/01/10 Slide 4
BREVE INTRODUCCIÓN
La Integración Continua según Martin Fowler:
La Integración Continua es una práctica de desarrollo de software donde los miembros de un equipo integran su trabajo con frecuencia, usualmente cada persona lo hace al menos una vez al día, generando varias integraciones diarias. Cada una de estas integraciones es verificada por una construcción automática que incluye pruebas para detectar errores tan rápido como sea posible. De esta forma, muchos equipos descubren que esta práctica reduce significativamente los problemas de integración y logra que el equipo desarrolle software cohesivo rápidamente. [1]
1. http://martinfowler.com/articles/continuousIntegration.html
RUNT22/01/10 Slide 5
HUDSON
¿ Qué es Hudson?
Hudson es una aplicación Web en la que se pueden programar trabajos de forma similar al cron de Linux, Unix o a las tareas programadas de Windows, pero con un montón de plugins que facilitan la orientación de la herramienta hacia la construcción automática de aplicaciones [1].
Hudson se enfoca principalmente en dos tareas:
1. Construcción y pruebas continuas de proyectos de software.
2. Monitoreo de tareas externas.
RUNT22/01/10 Slide 6
¿QUÉ HACE?
• Sirve (y está pensado) como motor de integración contínua.
• Genera reportes de tendencia de la compilación y pruebas unitarias de los proyectos.
• Existen muchos plugins para integrarlos en la herramienta y generar reportes de cobertura de las pruebas unitarias, calidad de código.
• Se integra fácilmente con SONAR que es una plataforma de administración de la calidad del código.
• Presenta una forma sencilla de administrar y controlar los procesos de construcción de un proyecto.
• Tiene muchos, muchos plugins.
RUNT22/01/10 Slide 7
NAVEGANDO HUDSON
RUNT22/01/10 Slide 8
AGENDA
• Breve Introducción.
• Instalación.
• Configuración de un proyecto básico.
• Plugins
– JUnit.
– Emma.
– FindBugs.
– SONAR.
• Hudson en RUNT.
– Implementación.
– Problemas y retos.
– Recomendaciones.
• Referencias.
RUNT22/01/10 Slide 9
INSTALACIÓN
1. Ingresar a http://hudson-ci.org/ y descargar hudson.war.
2. Desplegar hudson.war en un contenedor.
3. Ingresar a http://<servidor>:<puerto>/hudson.
RUNT22/01/10 Slide 10
AGENDA
• Breve Introducción.
• Instalación.
• Configuración de un proyecto básico.
• Plugins
– JUnit.
– Emma.
– FindBugs.
– SONAR.
• Hudson en RUNT.
– Implementación.
– Problemas y retos.
– Recomendaciones.
• Referencias.
RUNT22/01/10 Slide 11
PROYECTO BÁSICO - 1
1. Configure el/los repositorios.
RUNT22/01/10 Slide 12
PROYECTO BASICO - 2
2. Programe la tarea.
RUNT22/01/10 Slide 13
PROYECTO BASICO - 3
3. Configure los scripts de construcción.
RUNT22/01/10 Slide 14
PROYECTO BASICO - 4
4. Guarde y espere la ejecución (o hágalo manualmente).
RUNT22/01/10 Slide 15
PROYECTO BÁSICO - 5
5. Revise los resultados de la compilación: Resultado de una construcción. Tendencia. Reportes de plugins.
RUNT22/01/10 Slide 16
AGENDA
• Breve Introducción.
• Instalación.
• Configuración de un proyecto básico.
• Plugins
– JUnit.
– Emma.
– FindBugs.
– SONAR.
• Hudson en RUNT.
– Implementación.
– Problemas y retos.
– Recomendaciones.
• Referencias.
RUNT22/01/10 Slide 17
PLUGINS
RUNT22/01/10 Slide 18
JUnit – Pruebas Unitarias
• http://www.junit.org/.
• Hudson procesa los reportes generados por Junit sin necesidad de un plugin para ello.
• Genera un reporte de tendencia y también ejecución detallada de las pruebas unitarias.
RUNT22/01/10 Slide 19
EMMA - Navegación
• http://emma.sourceforge.net/.
• Emma genera reportes de cobertura de código de pruebas unitarias en bloques, clases, líneas y métodos. Hudson muestra una tendencia de las ejecuciones de las pruebas y también puede almacenar reportes detallados.
RUNT22/01/10 Slide 20
EMMA - Implementación
• Agregar Emma a los scripts ANT de JUnit.
• Incluir Emma en la ejecución de JUnit.
• Generar el reporte.
RUNT22/01/10 Slide 21
FindBugs – Revisión Estática
• http://findbugs.sourceforge.net/.
• FindBugs realiza una revisión estática del código para encontrar causas de fallos comunes.
• Se pueden activar y desactivar reglas o programar nuevas.
RUNT22/01/10 Slide 22
FindBugs - Implementación
• Crear una tarea ANT.
• Invocar su ejecución desde Hudson.
• Procesar el Reporte.
RUNT22/01/10 Slide 23
SONAR – Calidad de Código
RUNT22/01/10 Slide 24
SONAR - ¿Qué es? ¿Qué hace?
• SONAR es una plataforma para la administración de la calidad de código.
• Integra toda la funcionalidad anterior: pruebas unitarias, cobertura de código, bugs.
• Realiza un análisis mucho más detallado del código, desde el número de líneas hasta la complejidad ciclomática y el código duplicado.
• Permite activar y desactivar o la implementación de nuevas reglas.
RUNT22/01/10 Slide 25
SONAR - Bugs
RUNT22/01/10 Slide 26
AGENDA
• Breve Introducción.
• Instalación.
• Configuración de un proyecto básico.
• Plugins
– JUnit.
– Emma.
– FindBugs.
– SONAR.
• Hudson en RUNT.
– Implementación.
– Problemas y retos.
– Recomendaciones.
• Referencias.
RUNT22/01/10 Slide 27
HUDSON EN RUNT
Todos los scripts están hechos en ANT.
Hudson fue programado de forma que aprovechara el trabajo de la construcción anterior.
Contiene un “build nocturno” para actualizar el repositorio de librerías.
Las demás construcciones usan el workspace del build nocturno.
El orden de la programación es: Build Nocturno. Persistencia. Utilidades. Builds regulares. Pruebas unitarias.
RUNT22/01/10 Slide 28
HUDSON EN RUNT – Implementación
Una persona.
Dos semanas.
Más de 80 proyectos configurados.
30 GB ocupados.
Un PC 3 GB de RAM, 160 GB Disco. Intel dual core.
Tomcat 6.0.
SONAR.
MySQL.
JDK 1.5.
RUNT22/01/10 Slide 29
HUDSON EN RUNT – Problemas y Retos
Todo está hecho con ANT.
Algunos proyectos muy grandes no se pueden procesar con 1.2 GB de RAM.
Debido a la cantidad de proyectos el mantenimiento y el monitoreo es complejo.
Tiempo.
Una sola máquina puede quedarse corta para el procesamiento, es necesario probar la construcción distribuida.
Opción 'use update', codificación de caracteres.
RUNT22/01/10 Slide 30
RECOMENDACIONES
Definir una estrategia desde el principio del proyecto.
Adaptar Hudson al proyecto y no viceversa. Generalizar los scripts. Scripts no invasivos. Incremental. Seleccionar un HUDSON_HOME adecuado. Considerar la memoria RAM y el almacenamiento
en disco. Revisiones periódicas de los reportes.
RUNT22/01/10 Slide 31
AGENDA
• Breve Introducción.
• Instalación.
• Configuración de un proyecto básico.
• Plugins
– JUnit.
– Emma.
– FindBugs.
– SONAR.
• Hudson en RUNT.
– Implementación.
– Problemas y retos.
– Recomendaciones.
• Referencias.
RUNT22/01/10 Slide 32
REFERENCIAS
https://hudson.dev.java.net/http://www.junit.org/http://emma.sourceforge.net/http://findbugs.sourceforge.net/http://sonar.codehaus.org/http://carloszuluaga.wikidot.com/hudson
RUNT22/01/10 Slide 33
FIN
FIN