33
22/01/10 S lide 1 www.heinsohn.com.co INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNT

INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

22/01/10 S lide 1www.heinsohn.com.co

INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNT

Page 2: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

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.

Page 3: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

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.

Page 4: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

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

Page 5: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

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.

Page 6: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

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.

Page 7: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

RUNT22/01/10 Slide 7

NAVEGANDO HUDSON

Page 8: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

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.

Page 9: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

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.

Page 10: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

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.

Page 11: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

RUNT22/01/10 Slide 11

PROYECTO BÁSICO - 1

1. Configure el/los repositorios.

Page 12: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

RUNT22/01/10 Slide 12

PROYECTO BASICO - 2

2. Programe la tarea.

Page 13: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

RUNT22/01/10 Slide 13

PROYECTO BASICO - 3

3. Configure los scripts de construcción.

Page 14: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

RUNT22/01/10 Slide 14

PROYECTO BASICO - 4

4. Guarde y espere la ejecución (o hágalo manualmente).

Page 15: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

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.

Page 16: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

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.

Page 17: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

RUNT22/01/10 Slide 17

PLUGINS

Page 18: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

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.

Page 19: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

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.

Page 20: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

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.

Page 21: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

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.

Page 22: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

RUNT22/01/10 Slide 22

FindBugs - Implementación

• Crear una tarea ANT.

• Invocar su ejecución desde Hudson.

• Procesar el Reporte.

Page 23: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

RUNT22/01/10 Slide 23

SONAR – Calidad de Código

Page 24: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

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.

Page 25: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

RUNT22/01/10 Slide 25

SONAR - Bugs

Page 26: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

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.

Page 27: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

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.

Page 28: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

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.

Page 29: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

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.

Page 30: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

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.

Page 31: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

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.

Page 32: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

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

Page 33: INTEGRACIÓN CONTÍNUA CON HUDSON EN RUNTheinsohn.wdfiles.com/local--files/talleres:hudson...La Integración Continua según Martin Fowler: La Integración Continua es una práctica

RUNT22/01/10 Slide 33

FIN

FIN