ic maven jenkins_sonar
TRANSCRIPT
Integracin Continua
(Jenkins, Sonar,Maven)
https://www.linkedin.com/in/rociomp
@roci_munoz
ROCIO MUOZ PINEDO
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