Download - Continuous Integration
![Page 1: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/1.jpg)
Nuestros primeros pasos con Hudson
2011
Ing. José Díaz Díaz
[email protected]@joedayzSkype: joedayzwww.joedayz.pe
![Page 2: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/2.jpg)
Preparando tu Entorno
![Page 3: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/3.jpg)
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
![Page 4: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/4.jpg)
El entorno de integración continua
![Page 5: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/5.jpg)
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.
![Page 6: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/6.jpg)
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.
![Page 7: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/7.jpg)
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.
![Page 8: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/8.jpg)
![Page 9: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/9.jpg)
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.
![Page 10: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/10.jpg)
![Page 11: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/11.jpg)
Ejecutando Hudson java –jar hudson-2.0.1.war
![Page 12: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/12.jpg)
![Page 13: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/13.jpg)
![Page 14: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/14.jpg)
![Page 15: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/15.jpg)
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
![Page 16: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/16.jpg)
Configurando JDK y Maven
![Page 17: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/17.jpg)
Crear un proyecto de estilo libre.
Primer Job
![Page 18: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/18.jpg)
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
![Page 19: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/19.jpg)
Tareas Maven
![Page 20: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/20.jpg)
Job Creado
![Page 21: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/21.jpg)
Aplicación de Ejemplo
![Page 22: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/22.jpg)
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.
![Page 23: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/23.jpg)
![Page 24: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/24.jpg)
![Page 25: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/25.jpg)
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.
![Page 26: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/26.jpg)
T_USUARIO es el nombre real.
![Page 27: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/27.jpg)
Hudson reacciona
![Page 28: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/28.jpg)
Error al detalle
![Page 29: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/29.jpg)
![Page 30: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/30.jpg)
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
![Page 31: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/31.jpg)
![Page 32: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/32.jpg)
Javadoc:javadoc
• Luego de configurarlo aparecerá el link en la web
![Page 33: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/33.jpg)
![Page 34: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/34.jpg)
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.
![Page 35: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/35.jpg)
Añadiendo coverage y otras métricas
• Cobertura (http://cobertura.sourceforge.net/)• Nuestro proyecto ya ha sido configurado para
trabajar con Cobertura
Pom.xml
![Page 36: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/36.jpg)
Instalando plugin para Cobertura
• En hudson necesitamos instalar el plugin para cobertura
• Ingresamos a http://localhost:8080/pluginManager/
![Page 37: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/37.jpg)
Plugin Cobertura
![Page 38: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/38.jpg)
![Page 39: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/39.jpg)
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
![Page 40: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/40.jpg)
Tarea Maven
![Page 41: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/41.jpg)
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.
![Page 42: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/42.jpg)
![Page 43: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/43.jpg)
Informes de Cobertura
• Ahora dispararemos un build manual y ver los resultados
![Page 44: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/44.jpg)
Aparece Link de Cobertura.
![Page 45: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/45.jpg)
![Page 46: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/46.jpg)
![Page 47: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/47.jpg)
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/
![Page 48: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/48.jpg)
Gracias Bruce!!
![Page 49: Continuous Integration](https://reader035.vdocuments.pub/reader035/viewer/2022062300/55632ab7d8b42a5c7b8b4760/html5/thumbnails/49.jpg)
Contacto
Av. Guillermo Prescott 385, San IsidroLima – Perú
(511) 987500273www.joedayz.pe