Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ic maven jenkins_sonar

17,668 views

Published on

Charla realizada en Universidad de Ciencias de Cantabria sobre Integracion Continua usando Maven, Jenkins y Sonar

Published in: Technology
  • Be the first to comment

Ic maven jenkins_sonar

  1. 1. Integración Continua (Jenkins, Sonar,Maven) rocimunoz@gmail.com https://www.linkedin.com/in/rociomp @roci_munoz ROCIO MUÑOZ PINEDO rmpinedo@cic.es
  2. 2. 21.10.15 Your name here (insert->page number) 2 INDICE INTEGRACION CONTINUA:  Qué es  Problemas típicos en un proyecto  Ejemplo de un entorno de IC (Maven, Sonar, Jenkins) MAVEN  Qué es Maven (repositorios, plugins, dependencias...)  Instalación y ejemplos SONAR  Qué es Sonar  Instalación y ejemplos JENKINS  Qué es Jenkins.  Instalación y ejemplos
  3. 3. 21.10.15 Your name here (insert->page number) 3 INTEGRACION CONTINUA TE SUENAN ESTAS SITUACIONES ??  En mi máquina funcionaba ...  Pero si no he tocado esa función …  Ese error ya lo corregí ...  Funciona, pero no he hecho pruebas  Se me olvidó subir los cambios ...  La versión que se ha desplegado, no es la última  En Internet Explorer no funciona …  Será la caché del navegador ...
  4. 4. 21.10.15 Your name here (insert->page number) 4 INTEGRACION CONTINUA Y ESTOS ERRORES … ?  NoClassDefFoundError Problemas con el classpath  StackOverflowError Algo no va bien en la pila  NullPointerException Uff .. cualquier cosa ...  ArrayIndexOutOfBoundsException ¿Cuantas posiciones tiene ese array?  OutOfMemoryError ¿Sin memoria?, no es posible  Java.net.SocketException ¿Por qué se cerró la conexión?
  5. 5. 21.10.15 Your name here (insert->page number) 5 INTEGRACION CONTINUA ¿SOLUCION? INTEGRACION CONTINUA
  6. 6. 21.10.15 Your name here (insert->page number) 6 INTEGRACION CONTINUA ¿Qué es la Integración Continua? Martin Fowler: “La integración continua es una práctica de desarrollo de software en la cual los miembros de un equipo integran su trabajo frecuentemente, como mínimo de forma diaria. Cada integración se verifica mediante una herramienta de construcción automática para detectar los errores de integración tan pronto como sea posible. ”
  7. 7. 21.10.15 Your name here (insert->page number) 7 INTEGRACION CONTINUA Problemas en equipos sin Integración Continua  Problemas de compilación Ej: Juan compila con Jdk 1.5, Alberto con Jdk 1.7  Poca frecuencia de commits No se suele subir el código al final del día Se sube el código cuando está “estable”  Escasa documentación Muy poca gente documenta su código Pérdida de tiempo con becarios o nuevos miembros
  8. 8. 21.10.15 Your name here (insert->page number) 8 INTEGRACION CONTINUA Problemas en equipos sin Integración Continua  Errores en el paquete de instalación Se genera el paquete al final del proyecto. Se pierde mucho tiempo generando el paquete Aparecen errores no contemplados  Errores en el despliegue en servidor No se despliega en servidor más que cuando se entrega el proyecto. Aparecen errores de espacio, de memoria, no se han parametrizado bien las cosas La máquina del usuario final no es como se pensaba
  9. 9. 21.10.15 Your name here (insert->page number) 9 INTEGRACION CONTINUA Entorno de Integracion Continua Automatización de tareas usando Jenkins, Git, Sonar y Maven
  10. 10. 21.10.15 Your name here (insert->page number) 10 MAVEN
  11. 11. 21.10.15 Your name here (insert->page number) 11 MAVEN MAVEN: QUE ES?  Herramienta opensource para la gestión y construcción de un proyecto Java.  Capaz de gestionar un proyecto pasando por todas sus etapas  Validacion  Compilacion  Empaquetar  Testing  Instalar  Desplegar
  12. 12. 21.10.15 Your name here (insert->page number) 12 MAVEN MAVEN: Estructura Proyecto Maven  Un proyecto Maven tiene siempre una estructura similar  Necesita un fichero pom.xml
  13. 13. 21.10.15 Your name here (insert->page number) 13 MAVEN MAVEN: POM (Project Object Model) El pom.xml es el elemento principal de un proyecto Maven Se encuentra en la raíz del proyecto Nos pemite gestionar:  Configuración básica del proyecto  Nombre  Versión  Propiedades del proyecto  Dependencias(libs) del proyecto Forma de buscar la librería en el repositorio de Maven  Automatizar tareas Construcción, empaquetado, despliegue ...
  14. 14. 21.10.15 Your name here (insert->page number) 14 MAVEN MAVEN: POM (Project Object Model)
  15. 15. 21.10.15 Your name here (insert->page number) 15 MAVEN MAVEN: POM (Project Object Model)
  16. 16. 21.10.15 Your name here (insert->page number) 16 MAVEN MAVEN: CICLO DE VIDA  Un proyecto Maven sigue unas etapas básicas  Compile: genera los .class del proyecto  Test: Ejecuta los test  Package: Genera el .jar  Install: Copia el .jar a un directorio indicado  Deploy: Copia el fichero .jar a un servidor remoto  Se ejecutan con el comando mvn <accion> Cada etapa engloba a las anteriores  Ejemplo mvn install Se lanzarán compile, test, package, install
  17. 17. 21.10.15 Your name here (insert->page number) 17 MAVEN MAVEN: Uso de Plugins  Maven-surefire-plugin Permite lanzar los test unitarios  Maven-failsafe-plugin Permite lanzar los test integrados  Jacoco-maven-plugin Permite analizar la cobertura de código por los test ejecutados  Sonar-maven-plugin Integra cobertura de jacoco junto a otras métricas de calidad del código Podeis consultar la lista de plugins en https://maven.apache.org/plugins/index.html
  18. 18. 21.10.15 Your name here (insert->page number) 18 MAVEN MAVEN: Repositorios locales y remotos  Maven trabaja con un repositorio remoto en donde están alojadas las dependencias del proyecto http://mvnrepository.com/  En el repositorio local se almacenan las descargas del repositorio remoto. Es una carpeta oculta llamada .m2 Según el SO $HOME/.m2 Linux→ C:/Documents and Settings/{nombre-usuario}/.m2 Windows→ ~/.m2 Mac→  Se puede cambiar en el fichero settings.xml
  19. 19. 21.10.15 Your name here (insert->page number) 19 MAVEN MAVEN: Ventajas de proyectos con Maven  Ahorro de espacio en máquina local Las librerías están centralizadas en un único punto (.m2)  Ahorro de espacio en servidor de control de versiones No se almacenan las librerías en el proyecto, solo sus dependencias en el pom.xml  Proyecto uniforme Un proyecto Maven mantiene siempre la misma estructura. Esto ayuda trabajando en equipo  Plugins Se pueden extender las tareas mediante plugins
  20. 20. 21.10.15 Your name here (insert->page number) 20 MAVEN MAVEN: Ventajas de proyectos con Maven  Herencia en la configuración Proyectos grandes pueden crearse mediante módulos y heredar una configuración común  Automatización de tareas Permite automatizar tareas de empaquetado y despliegue y evitar errores humanos
  21. 21. 21.10.15 Your name here (insert->page number) 21 MAVEN MAVEN: Inconvenientes de proyectos Maven  Necesidad de red Sin red no podemos descargar las librerías  Dependencias transitivas Excesivo número de librerías en el proyecto por depender unas de otras Ejemplo: Al instalar junit4.11, se descarga junto a ella hamcrest-core-1.3.jar
  22. 22. 21.10.15 Your name here (insert->page number) 22 MAVEN MAVEN: Instalación  Descargar Maven https://maven.apache.org/  Añadir carpeta bin al Path Windows: c:apache-maven-3.0.5bin Unix: MAVEN_HOME="/home/user/Downloads/apache-maven-3.1.1" export MAVEN_HOME PATH=$PATH:$MAVEN_HOME/bin  Comprobar instalación mvn -version
  23. 23. 21.10.15 Your name here (insert->page number) 23 SONAR QUBE
  24. 24. 21.10.15 Your name here (insert->page number) 24 SONAR QUÉ ES SONAR  Plataforma de software libre para evaluar código fuente  Código duplicado  Resultado de test  Cobertura de código (Jacoco)  Posibles errores  Se integra con Maven y Jenkins  Compatible con JDK a partir de 1.7
  25. 25. 21.10.15 Your name here (insert->page number) 25 SONAR ANALISIS SONAR
  26. 26. 21.10.15 Your name here (insert->page number) 26 SONAR ARQUITECTURA SONAR
  27. 27. 21.10.15 Your name here (insert->page number) 27 SONAR ARQUITECTURA SONAR  Base de Datos  Configuración de sonar  Calidad de código de los proyectos  Soporte para Mysql, Oracle, Postgress, SqlServer  Analizadores  Realizan las mediciones sobre el código  Hay varios tipos de analizadores (SonarQubeRunner, Maven, SonarAnt ...)  Servidor Web  Permite al usuario visualizar la calidad de su código
  28. 28. 21.10.15 Your name here (insert->page number) 28 SONAR INSTALACION SONAR  Descarga Servidor Web SONAR QUBE  http://www.sonarqube.org/downloads/  Descomprimir el fichero zip  Arrancar servidor web Sonar QUBE  sh sonar.sh start Unix→  startSonar.bat Windows→  Url por defecto : http://localhost:9000
  29. 29. 21.10.15 Your name here (insert->page number) 29 SONAR INSTALACION SONAR  Configuración BBDD Creación de BBDD, usuario y permisos CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE USER 'sonar' IDENTIFIED BY 'sonar'; GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar'; GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar'; FLUSH PRIVILEGES;
  30. 30. 21.10.15 Your name here (insert->page number) 30 SONAR INSTALACION SONAR  Configuración parámetros Sonar <install_directory>/conf/sonar.properties sonar.jdbc.username=nombre_usuario sonar.jdbc.password=password sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar
  31. 31. 21.10.15 Your name here (insert->page number) 31 SONAR ADMINISTRACION DE SONAR  Deuda Técnica  Tiempo a invertir para corregir una carencia en el código  Cuanto más pequeña sea mejor será la calidad del código  SCALE Rating  Transmite de forma rápida la calidad del proyecto asignándole una categoria  A: Deuda técnica <10%  B: Entre el 10 y el 20%  C: Entre el 21 y el 50%  D: Entre el 51% y el 100%  E: Superior al 100%
  32. 32. 21.10.15 Your name here (insert->page number) 32 SONAR ADMINISTRACION DE SONAR
  33. 33. 21.10.15 Your name here (insert->page number) 33 SONAR GESTION DE WIDGETS y PLUGINS  Podemos personalizar el Dashboard con widgets
  34. 34. 21.10.15 Your name here (insert->page number) 34 SONAR INTEGRACIÓN MAVEN - SONAR  Analizador Maven  Añadimos configuración de sonar en el fichero settings.xml  Añadimos plugin Sonar en el fichero pom.xml
  35. 35. 21.10.15 Your name here (insert->page number) 35 JENKINS
  36. 36. 21.10.15 Your name here (insert->page number) 36 JENKINS QUÉ ES JENKINS  Es un servidor opensource de integración continua escrito en Java  Extensible mediante plugins  Soporta herramientas de control de versiones (Git, Subversion..)  Se integra facilmente con Maven y Sonar
  37. 37. 21.10.15 Your name here (insert->page number) 37 JENKINS INSTALACION JENKINS  Descargar Jenkins https://jenkins-ci.org/  Hay 2 formas de instalar  Como servicio/demonio  Descarga .war y lanzar en un servidor ajeno (Tomcat)  Url por defecto: http://localhost:8080
  38. 38. 21.10.15 Your name here (insert->page number) 38 JENKINS INSTALACION PLUGINS  Menú Administrar Jenkins/Administrar Plugins
  39. 39. 21.10.15 Your name here (insert->page number) 39 DEMO INTEGRACION CONTINUA GESTION DE ALUMNOS  Servidor Jenkins  http://localhost:8080  Servidor Sonar  Http://localhost:9000  Código fuente en Github  https://github.com/rocimunoz/GestionAlumnos
  40. 40. 21.10.15 Your name here (insert->page number) 40 DEMO INTEGRACION CONTINUA
  41. 41. Integración Continua (Jenkins, Sonar,Maven) rocimunoz@gmail.com https://www.linkedin.com/in/rociomp @roci_munoz ROCIO MUÑOZ PINEDO rmpinedo@cic.es CONCLUSIONES  El coste incial del montaje es alto  Nos permite ahorrar tiempo  Nos permite reducir errores  Dispondremos de métricas sobre nuestros proyectos  Dispondremos de un histórico de ejecuciones  Da seguridad al equipo de trabajo

×