Nuestros primeros pasos con Hudson 2011 Ing. José Díaz Díaz [email_address] @joedayz Skype: joedayz www.joedayz.pe
Preparando tu Entorno
Preparando tu entorno <ul><li>Necesitamos Java 6+.  ¿Cómo instalarlo? </li></ul><ul><li>Tener un Servidor SVN propio o ext...
El entorno de integración continua
El entorno de Integración  Continua <ul><li>El desarrollo de  proyectos agiles  necesita prevenir problemas y regresiones ...
El entorno de Integración  Continua <ul><li>Es casi inviable ejecutar los unit test en la maquina de cada desarrollador po...
El entorno de Integración Continua <ul><li>La respuesta a nuestros problemas es un entorno de integración continua para as...
 
El entorno de Integración Continua <ul><li>Existen muchas arquitecturas de integración continua. En la figura siguiente , ...
 
Ejecutando Hudson   java –jar hudson-2.0.1.war
 
 
 
Configurando Hudson <ul><li>Hudson </li></ul><ul><ul><li>Configuramos Maven </li></ul></ul><ul><ul><li>Configuramos JDK  <...
Configurando JDK y Maven
Primer Job Crear un proyecto de estilo libre.
Configurando SVN 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,  ...
Tareas Maven
Job Creado
Aplicación de Ejemplo
Obteniendo el Código de Ejemplo <ul><li>Usando el  SpringSource Tool Suite  con su plugin  subclipse . </li></ul><ul><li>D...
 
 
Test <ul><li>Luego de bajar el proyecto, lo que haremos es modificar una clase que haga que nuestros tests fallen. </li></...
T_USUARIO es el nombre real.
Hudson reacciona
Error al detalle
 
Mas reportes - Javadocs <ul><li>Los comentarios javadoc son un recurso importante de documentación técnica. </li></ul><ul>...
 
Javadoc:javadoc <ul><li>Luego de configurarlo aparecerá el link en la web </li></ul>
 
Añadiendo coverage y otras métricas <ul><li>Con hudson es posible publicar muchos reportes útiles aparte del javadoc </li>...
Añadiendo coverage y otras métricas <ul><li>Cobertura ( http://cobertura.sourceforge.net/ ) </li></ul><ul><li>Nuestro proy...
Instalando plugin para Cobertura <ul><li>En hudson necesitamos instalar el plugin para cobertura  </li></ul><ul><li>Ingres...
Plugin Cobertura
 
Usar Cobertura <ul><li>Para configurar coverage metrics de código en nuestro proyecto necesitamos hacer dos cosas:  </li><...
Tarea Maven
Informes de Cobertura <ul><li>En la sección de “Coverage Metrics Target” vamos a definir los niveles mínimos aceptables de...
 
Informes de Cobertura <ul><li>Ahora dispararemos un build manual y ver los resultados </li></ul>
Aparece Link de Cobertura.
 
 
Referencias <ul><li>Propias </li></ul><ul><ul><li>Joedayz.org </li></ul></ul><ul><ul><li>Joedayz.pe </li></ul></ul><ul><ul...
Gracias Bruce!!
Contacto Av. Guillermo Prescott 385, San Isidro Lima – Perú (511) 987500273 www.joedayz.pe
Upcoming SlideShare
Loading in …5
×

Continuous Integration

2,565 views
2,540 views

Published on

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

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,565
On SlideShare
0
From Embeds
0
Number of Embeds
436
Actions
Shares
0
Downloads
75
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Continuous Integration

  1. 1. Nuestros primeros pasos con Hudson 2011 Ing. José Díaz Díaz [email_address] @joedayz Skype: joedayz www.joedayz.pe
  2. 2. Preparando tu Entorno
  3. 3. Preparando tu entorno <ul><li>Necesitamos Java 6+. ¿Cómo instalarlo? </li></ul><ul><li>Tener un Servidor SVN propio o externo </li></ul><ul><ul><li>Google Code Hosting . ¿Cómo usarlo? </li></ul></ul><ul><ul><li>SourceRepo.com ¿Cómo usarlo? </li></ul></ul><ul><ul><li>Slik Subversion ¿Cómo usarlo? </li></ul></ul><ul><li>Hudson </li></ul><ul><ul><li>Descargar de http://hudson-ci.org/ </li></ul></ul><ul><ul><li>Vídeo de instalación </li></ul></ul><ul><ul><li>Ejecutar standalone: java –jar hudson-2.0.1.war </li></ul></ul>
  4. 4. El entorno de integración continua
  5. 5. El entorno de Integración Continua <ul><li>El desarrollo de proyectos agiles necesita prevenir problemas y regresiones en el menor tiempo posible. </li></ul><ul><li>Algunas practicas se deberían establecer para conseguir este objetivo: </li></ul><ul><ul><li>Desarrollar test unitarios </li></ul></ul><ul><ul><li>Realizar commits frecuentes del código fuente </li></ul></ul><ul><ul><li>Deployar la aplicación en un entorno integrado </li></ul></ul><ul><ul><li>Ejecutar los test </li></ul></ul><ul><li>Estas buenas practicas necesitan un gran compromiso de parte de los desarrolladores para lograr los resultados esperados. </li></ul>
  6. 6. El entorno de Integración Continua <ul><li>Es casi inviable ejecutar los unit test en la maquina de cada desarrollador porque esto minimizará sus recursos (memoria, IDE, tiempo) </li></ul><ul><li>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. </li></ul>
  7. 7. El entorno de Integración Continua <ul><li>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. </li></ul><ul><li>Existen muchos entornos de integración continua. Los más conocidos son Hudson , Continuum, Cruise Control, Team City . </li></ul>
  8. 9. El entorno de Integración Continua <ul><li>Existen muchas arquitecturas de integración continua. En la figura siguiente , por ejemplo, tenemos Hudson , SVN , Maven y GlassFish . </li></ul><ul><li>No es la única y no hay una mejor que otra. Si te permite cumplir los objetivos planteados inicialmente SIRVE . </li></ul>
  9. 11. Ejecutando Hudson java –jar hudson-2.0.1.war
  10. 15. Configurando Hudson <ul><li>Hudson </li></ul><ul><ul><li>Configuramos Maven </li></ul></ul><ul><ul><li>Configuramos JDK </li></ul></ul><ul><ul><li>Ver video de instalación </li></ul></ul><ul><li>Creando nuestro primer Job </li></ul><ul><ul><li>Usaremos la aplicación http://code.google.com/p/joedayz-poo/source/checkout </li></ul></ul>
  11. 16. Configurando JDK y Maven
  12. 17. Primer Job Crear un proyecto de estilo libre.
  13. 18. Configurando SVN 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)
  14. 19. Tareas Maven
  15. 20. Job Creado
  16. 21. Aplicación de Ejemplo
  17. 22. Obteniendo el Código de Ejemplo <ul><li>Usando el SpringSource Tool Suite con su plugin subclipse . </li></ul><ul><li>Descargamos el código fuente de https ://joedayz-poo.googlecode.com/svn/trunk/ </li></ul><ul><li>El proyecto esta mavenizado. Ver el POM.xml para ver los plugins que necesitas instalar para trabajar con Hudson sin problemas. </li></ul>
  18. 25. Test <ul><li>Luego de bajar el proyecto, lo que haremos es modificar una clase que haga que nuestros tests fallen. </li></ul><ul><li>Nota: Como estamos usando maven y el plugin surefire. Tus tests deben terminar así:    * **/*Test.java      * **/Test*.java      * **/*TestCase.java  </li></ul><ul><li>Sino te dirá que no hay test. </li></ul>
  19. 26. T_USUARIO es el nombre real.
  20. 27. Hudson reacciona
  21. 28. Error al detalle
  22. 30. Mas reportes - Javadocs <ul><li>Los comentarios javadoc son un recurso importante de documentación técnica. </li></ul><ul><li>UmlGraph es una herramienta que te permite producir Javadoc con diagramas UML. </li></ul><ul><li>Hudson puede integrar Javadoc directamente a la app web. De esta forma todos pueden acceder al último Javadoc facilmente. </li></ul><ul><li>Tenemos que modificar en Hudson </li></ul>
  23. 32. Javadoc:javadoc <ul><li>Luego de configurarlo aparecerá el link en la web </li></ul>
  24. 34. Añadiendo coverage y otras métricas <ul><li>Con hudson es posible publicar muchos reportes útiles aparte del javadoc </li></ul><ul><li>Vamos a usar Cobertura para añadir coverage metrics. </li></ul><ul><li>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. </li></ul><ul><li>Lo mejor para ver si nuestro team esta aplicando buenas practicas como TDD o BDD . </li></ul>
  25. 35. Añadiendo coverage y otras métricas <ul><li>Cobertura ( http://cobertura.sourceforge.net/ ) </li></ul><ul><li>Nuestro proyecto ya ha sido configurado para trabajar con Cobertura </li></ul>Pom.xml
  26. 36. Instalando plugin para Cobertura <ul><li>En hudson necesitamos instalar el plugin para cobertura </li></ul><ul><li>Ingresamos a http://localhost:8080/pluginManager/ </li></ul>
  27. 37. Plugin Cobertura
  28. 39. Usar Cobertura <ul><li>Para configurar coverage metrics de código en nuestro proyecto necesitamos hacer dos cosas: </li></ul><ul><ul><li>Primero crear un Cobertura Coverage data en formato XML que Hudson usará. </li></ul></ul><ul><ul><li>Luego configurar Hudson para que muestre los reportes de coverage </li></ul></ul>
  29. 40. Tarea Maven
  30. 41. Informes de Cobertura <ul><li>En la sección de “Coverage Metrics Target” vamos a definir los niveles mínimos aceptables de code coverage. </li></ul><ul><li>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. </li></ul>
  31. 43. Informes de Cobertura <ul><li>Ahora dispararemos un build manual y ver los resultados </li></ul>
  32. 44. Aparece Link de Cobertura.
  33. 47. Referencias <ul><li>Propias </li></ul><ul><ul><li>Joedayz.org </li></ul></ul><ul><ul><li>Joedayz.pe </li></ul></ul><ul><ul><li>http://www.facebook.com/JoeDayzUniversity </li></ul></ul><ul><li>Otras </li></ul><ul><ul><li>Continuous Integration: Improving Software Quality and Reducing Risk </li></ul></ul><ul><ul><li>Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation (Addison-Wesley Signature Series (Fowler)) </li></ul></ul><ul><ul><li>Agile Testing </li></ul></ul><ul><li>http://www.agile-peru.net/ </li></ul><ul><li>http://agile-spain.com/ </li></ul>
  34. 48. Gracias Bruce!!
  35. 49. Contacto Av. Guillermo Prescott 385, San Isidro Lima – Perú (511) 987500273 www.joedayz.pe

×