Nuestros primeros pasos con Hudson
2011
Ing. José Díaz Díaz
[email protected]@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