Continuous Integration

Post on 25-May-2015

2.520 views 0 download

description

Introducción y aplicación de Integración Continua con Hudson.

Transcript of Continuous Integration

Nuestros primeros pasos con Hudson

2011

Ing. José Díaz Díaz

Jose.diaz@joedayz.pe@joedayzSkype: joedayzwww.joedayz.pe

Preparando tu Entorno

Preparando tu entorno

• Necesitamos Java 6+. ¿Cómo instalarlo?• Tener un Servidor SVN propio o externo

– Google Code Hosting. ¿Cómo usarlo?– SourceRepo.com ¿Cómo usarlo?– Slik Subversion ¿Cómo usarlo?

• Hudson – Descargar de http://hudson-ci.org/ – Vídeo de instalación– Ejecutar standalone: java –jar hudson-2.0.1.war

El entorno de integración continua

El entorno de Integración Continua

• El desarrollo de proyectos agiles necesita prevenir problemas y regresiones en el menor tiempo posible.

• Algunas practicas se deberían establecer para conseguir este objetivo:– Desarrollar test unitarios– Realizar commits frecuentes del código fuente– Deployar la aplicación en un entorno integrado– Ejecutar los test

• Estas buenas practicas necesitan un gran compromiso de parte de los desarrolladores para lograr los resultados esperados.

El entorno de Integración Continua

• Es casi inviable ejecutar los unit test en la maquina de cada desarrollador porque esto minimizará sus recursos (memoria, IDE, tiempo)

• Es un desperdicio tener un recurso asignado para deployar la aplicación y que este verificando que no hay regresión por la ejecución de los tests.

El entorno de IntegraciónContinua

• La respuesta a nuestros problemas es un entorno de integración continua para asegurarnos que las pruebas unitarias se han realizado a lo largo de todo el proceso de desarrollo de la aplicación.

• Existen muchos entornos de integración continua. Los más conocidos son Hudson, Continuum, Cruise Control, Team City.

El entorno de IntegraciónContinua

• Existen muchas arquitecturas de integración continua. En la figura siguiente , por ejemplo, tenemos Hudson, SVN, Maven y GlassFish.

• No es la única y no hay una mejor que otra. Si te permite cumplir los objetivos planteados inicialmente SIRVE.

Ejecutando Hudson java –jar hudson-2.0.1.war

Configurando Hudson

• Hudson– Configuramos Maven– Configuramos JDK – Ver video de instalación

• Creando nuestro primer Job– Usaremos la aplicación

http://code.google.com/p/joedayz-poo/source/checkout

Configurando JDK y Maven

Crear un proyecto de estilo libre.

Primer Job

Es un cron syntax: minuto(0-59), hora (0-23), día del mes (1-31), mes(1-12) y día de la semana (0-

7, Con 0 y 7 es Domingo)

Configurando SVN

Tareas Maven

Job Creado

Aplicación de Ejemplo

Obteniendo el Código de Ejemplo

• Usando el SpringSource Tool Suite con su plugin subclipse.

• Descargamos el código fuente de https://joedayz-poo.googlecode.com/svn/trunk/

• El proyecto esta mavenizado. Ver el POM.xml para ver los plugins que necesitas instalar para trabajar con Hudson sin problemas.

Test

• Luego de bajar el proyecto, lo que haremos es modificar una clase que haga que nuestros tests fallen.

Nota: Como estamos usando maven y el plugin surefire. Tus tests deben terminar así: * **/*Test.java * **/Test*.java * **/*TestCase.java

Sino te dirá que no hay test.

T_USUARIO es el nombre real.

Hudson reacciona

Error al detalle

Mas reportes - Javadocs

• Los comentarios javadoc son un recurso importante de documentación técnica.

• UmlGraph es una herramienta que te permite producir Javadoc con diagramas UML.

• Hudson puede integrar Javadoc directamente a la app web. De esta forma todos pueden acceder al último Javadoc facilmente.

• Tenemos que modificar en Hudson

Javadoc:javadoc

• Luego de configurarlo aparecerá el link en la web

Añadiendo coverage y otras métricas

• Con hudson es posible publicar muchos reportes útiles aparte del javadoc

• Vamos a usar Cobertura para añadir coverage metrics.

• Code coverage nos dará los indicadores de cuanto de nuestro código es ejecutando durante nuestros tests – útil para encontrar áreas donde el código no ha sido testeado.

• Lo mejor para ver si nuestro team esta aplicando buenas practicas como TDD o BDD.

Añadiendo coverage y otras métricas

• Cobertura (http://cobertura.sourceforge.net/)• Nuestro proyecto ya ha sido configurado para

trabajar con Cobertura

Pom.xml

Instalando plugin para Cobertura

• En hudson necesitamos instalar el plugin para cobertura

• Ingresamos a http://localhost:8080/pluginManager/

Plugin Cobertura

Usar Cobertura

• Para configurar coverage metrics de código en nuestro proyecto necesitamos hacer dos cosas: – Primero crear un Cobertura Coverage data en

formato XML que Hudson usará.– Luego configurar Hudson para que muestre los

reportes de coverage

Tarea Maven

Informes de Cobertura

• En la sección de “Coverage Metrics Target” vamos a definir los niveles mínimos aceptables de code coverage.

• En la figura que viene estipulamos que menos de 50% de test coverage es “inestable” (indicado por un circulo amarillo) y notificar al team al respecto.

Informes de Cobertura

• Ahora dispararemos un build manual y ver los resultados

Aparece Link de Cobertura.

Referencias• Propias

– Joedayz.org– Joedayz.pe– http://www.facebook.com/JoeDayzUniversity

• Otras– Continuous Integration: Improving Software Quality and Reducing

Risk– Continuous Delivery: Reliable Software Releases through Build, Test,

and Deployment Automation (Addison-Wesley Signature Series (Fowler))

– Agile Testing• http://www.agile-peru.net/• http://agile-spain.com/

Gracias Bruce!!

Contacto

Av. Guillermo Prescott 385, San IsidroLima – Perú

(511) 987500273www.joedayz.pe