integraciÓn contÍnua con hudson en runtheinsohn.wdfiles.com/local--files/talleres:hudson...la...

Post on 05-Aug-2020

3 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related