ic maven jenkins_sonar

Download Ic maven jenkins_sonar

If you can't read please download the document

Upload: rocio-munoz

Post on 13-Apr-2017

2.365 views

Category:

Technology


0 download

TRANSCRIPT

Integracin Continua
(Jenkins, Sonar,Maven)

[email protected]

https://www.linkedin.com/in/rociomp

@roci_munoz

ROCIO MUOZ PINEDO

[email protected]

INDICE

INTEGRACION CONTINUA:

Qu es

Problemas tpicos en un proyecto

Ejemplo de un entorno de IC (Maven, Sonar, Jenkins)

MAVEN

Qu es Maven (repositorios, plugins, dependencias...)

Instalacin y ejemplos

SONAR

Qu es Sonar

Instalacin y ejemplos

JENKINS

Qu es Jenkins.

Instalacin y ejemplos

INTEGRACION CONTINUA

TE SUENAN ESTAS SITUACIONES ??

En mi mquina funcionaba ...

Pero si no he tocado esa funcin

Ese error ya lo correg ...

Funciona, pero no he hecho pruebas

Se me olvid subir los cambios ...

La versin que se ha desplegado, no es la ltima

En Internet Explorer no funciona

Ser la cach del navegador ...

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 conexin?

INTEGRACION CONTINUA

SOLUCION?INTEGRACION CONTINUA

INTEGRACION CONTINUA

Qu es la Integracin Continua?

Martin Fowler: La integracin continua es una prctica de desarrollo de software en la cual los miembros de un equipo integran su trabajo frecuentemente, como mnimo de forma diaria. Cada integracin se verifica mediante una herramienta de construccin automtica para detectar los errores de integracin tan pronto como sea posible.

INTEGRACION CONTINUA

Problemas en equipos sin Integracin Continua

Problemas de compilacin

Ej: Juan compila con Jdk 1.5, Alberto con Jdk 1.7

Poca frecuencia de commits

No se suele subir el cdigo al final del daSe sube el cdigo cuando est estable

Escasa documentacin

Muy poca gente documenta su cdigoPrdida de tiempo con becarios o nuevos miembros

INTEGRACION CONTINUA

Problemas en equipos sin Integracin Continua

Errores en el paquete de instalacin

Se genera el paquete al final del proyecto.Se pierde mucho tiempo generando el paqueteAparecen errores no contemplados

Errores en el despliegue en servidor

No se despliega en servidor ms que cuando se entrega el proyecto.Aparecen errores de espacio, de memoria, no se han parametrizado bien las cosasLa mquina del usuario final no es como se pensaba

INTEGRACION CONTINUA

Entorno de Integracion Continua

Automatizacin de tareas usando Jenkins, Git, Sonar y Maven

MAVEN

MAVEN

MAVEN: QUE ES?

Herramienta opensource para la gestin y construccin de un proyecto Java.

Capaz de gestionar un proyecto pasando por todas sus etapasValidacion

Compilacion

Empaquetar

Testing

Instalar

Desplegar

MAVEN

MAVEN: Estructura Proyecto Maven

Un proyecto Maven tiene siempre una estructura similar

Necesita un fichero pom.xml

MAVEN

MAVEN: POM (Project Object Model)El pom.xml es el elemento principal de un proyecto MavenSe encuentra en la raz del proyectoNos pemite gestionar:

Configuracin bsica del proyectoNombre

Versin

Propiedades del proyecto

Dependencias(libs) del proyectoForma de buscar la librera en el repositorio de Maven

Automatizar tareasConstruccin, empaquetado, despliegue ...

MAVEN

MAVEN: POM (Project Object Model)

MAVEN

MAVEN: POM (Project Object Model)

MAVEN

MAVEN: CICLO DE VIDA

Un proyecto Maven sigue unas etapas bsicasCompile: 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 Cada etapa engloba a las anteriores

Ejemplo mvn installSe lanzarn compile, test, package, install

MAVEN

MAVEN: Uso de Plugins

Maven-surefire-pluginPermite lanzar los test unitarios

Maven-failsafe-pluginPermite lanzar los test integrados

Jacoco-maven-pluginPermite analizar la cobertura de cdigo por los test ejecutados

Sonar-maven-pluginIntegra cobertura de jacoco junto a otras mtricas de calidad del cdigo

Podeis consultar la lista de plugins en https://maven.apache.org/plugins/index.html

MAVEN

MAVEN: Repositorios locales y remotos

Maven trabaja con un repositorio remoto en donde estn alojadas las dependencias del proyectohttp://mvnrepository.com/

En el repositorio local se almacenan las descargas del repositorio remoto. Es una carpeta oculta llamada .m2Segn el SO$HOME/.m2 LinuxC:/Documents and Settings/{nombre-usuario}/.m2 Windows~/.m2 Mac

Se puede cambiar en el fichero settings.xml

MAVEN

MAVEN: Ventajas de proyectos con Maven

Ahorro de espacio en mquina localLas libreras estn centralizadas en un nico punto (.m2)

Ahorro de espacio en servidor de control de versionesNo se almacenan las libreras en el proyecto, solo sus dependencias en el pom.xml

Proyecto uniformeUn proyecto Maven mantiene siempre la misma estructura. Esto ayuda trabajando en equipo

PluginsSe pueden extender las tareas mediante plugins

MAVEN

MAVEN: Ventajas de proyectos con Maven

Herencia en la configuracinProyectos grandes pueden crearse mediante mdulos y heredar una configuracin comn

Automatizacin de tareasPermite automatizar tareas de empaquetado y despliegue y evitar errores humanos

MAVEN

MAVEN: Inconvenientes de proyectos Maven

Necesidad de redSin red no podemos descargar las libreras

Dependencias transitivasExcesivo nmero de libreras en el proyecto por depender unas de otrasEjemplo: Al instalar junit4.11, se descarga junto a ella hamcrest-core-1.3.jar

MAVEN

MAVEN: Instalacin

Descargar Mavenhttps://maven.apache.org/

Aadir carpeta bin al PathWindows: c:\apache-maven-3.0.5\binUnix: MAVEN_HOME="/home/user/Downloads/apache-maven-3.1.1"export MAVEN_HOME PATH=$PATH:$MAVEN_HOME/bin

Comprobar instalacinmvn -version

SONAR QUBE

SONAR

QU ES SONAR

Plataforma de software libre para evaluar cdigo fuenteCdigo duplicado

Resultado de test

Cobertura de cdigo (Jacoco)

Posibles errores

Se integra con Maven y Jenkins

Compatible con JDK a partir de 1.7

SONAR

ANALISIS SONAR

SONAR

ARQUITECTURA SONAR

SONAR

ARQUITECTURA SONAR

Base de DatosConfiguracin de sonar

Calidad de cdigo de los proyectos

Soporte para Mysql, Oracle, Postgress, SqlServer

AnalizadoresRealizan las mediciones sobre el cdigo

Hay varios tipos de analizadores (SonarQubeRunner, Maven, SonarAnt ...)

Servidor WebPermite al usuario visualizar la calidad de su cdigo

SONAR

INSTALACION SONAR

Descarga Servidor Web SONAR QUBEhttp://www.sonarqube.org/downloads/

Descomprimir el fichero zip

Arrancar servidor web Sonar QUBEsh sonar.sh start Unix

startSonar.bat Windows

Url por defecto : http://localhost:9000

SONAR

INSTALACION SONAR

Configuracin BBDDCreacin de BBDD, usuario y permisosCREATE 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;

SONAR

INSTALACION SONAR

Configuracin parmetros Sonar/conf/sonar.propertiessonar.jdbc.username=nombre_usuariosonar.jdbc.password=passwordsonar.jdbc.url=jdbc:mysql://localhost:3306/sonar

SONAR

ADMINISTRACION DE SONAR

Deuda TcnicaTiempo a invertir para corregir una carencia en el cdigo

Cuanto ms pequea sea mejor ser la calidad del cdigo

SCALE RatingTransmite de forma rpida la calidad del proyecto asignndole una categoria

A: Deuda tcnica