SlideShare une entreprise Scribd logo
1  sur  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
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
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 ...
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?
21.10.15 Your name here (insert->page number) 5
INTEGRACION CONTINUA
¿SOLUCION?
INTEGRACION
CONTINUA
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. ”
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
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
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
21.10.15 Your name here (insert->page number) 10
MAVEN
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
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
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 ...
21.10.15 Your name here (insert->page number) 14
MAVEN
MAVEN: POM (Project Object Model)
21.10.15 Your name here (insert->page number) 15
MAVEN
MAVEN: POM (Project Object Model)
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
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
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
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
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.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
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
21.10.15 Your name here (insert->page number) 23
SONAR QUBE
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
21.10.15 Your name here (insert->page number) 25
SONAR
ANALISIS SONAR
21.10.15 Your name here (insert->page number) 26
SONAR
ARQUITECTURA SONAR
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
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
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;
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
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%
21.10.15 Your name here (insert->page number) 32
SONAR
ADMINISTRACION DE SONAR
21.10.15 Your name here (insert->page number) 33
SONAR
GESTION DE WIDGETS y PLUGINS
 Podemos personalizar el Dashboard con widgets
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
21.10.15 Your name here (insert->page number) 35
JENKINS
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
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
21.10.15 Your name here (insert->page number) 38
JENKINS
INSTALACION PLUGINS
 Menú Administrar Jenkins/Administrar Plugins
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
21.10.15 Your name here (insert->page number) 40
DEMO INTEGRACION CONTINUA
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

Contenu connexe

Tendances

Introducción a Heroku (by Liquid Kloud)
Introducción a Heroku (by Liquid Kloud)Introducción a Heroku (by Liquid Kloud)
Introducción a Heroku (by Liquid Kloud)Jose Ramon Huerga Ayuso
 
Intro a Heroku
Intro a HerokuIntro a Heroku
Intro a Herokubitfon
 
[Drupal campspain2017] Contribuir a Drupal, de 0 a 100
[Drupal campspain2017] Contribuir a Drupal, de 0 a 100[Drupal campspain2017] Contribuir a Drupal, de 0 a 100
[Drupal campspain2017] Contribuir a Drupal, de 0 a 100Keopx
 
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]Keopx
 
Java day 2018 -> Integración y entrega continua no es más trabajo
Java day 2018 ->  Integración y entrega continua no es más trabajoJava day 2018 ->  Integración y entrega continua no es más trabajo
Java day 2018 -> Integración y entrega continua no es más trabajoDavid Recinos Orellana
 
Vagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de usoVagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de usoSergio Zambrano Delfa
 
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallosTesteando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallosMicael Gallego
 
Un recorrido por las herramientas de software libre que uso cada día, en los ...
Un recorrido por las herramientas de software libre que uso cada día, en los ...Un recorrido por las herramientas de software libre que uso cada día, en los ...
Un recorrido por las herramientas de software libre que uso cada día, en los ...Christian Rodriguez
 
Git y drupal
Git y drupalGit y drupal
Git y drupalJuampy NR
 
Dev ops infraestructura agil con open source
Dev ops   infraestructura agil con open sourceDev ops   infraestructura agil con open source
Dev ops infraestructura agil con open sourcescrumecuador
 
Desplegando código con Phing, PHPunit, Coder y Jenkins
Desplegando código con Phing, PHPunit, Coder y JenkinsDesplegando código con Phing, PHPunit, Coder y Jenkins
Desplegando código con Phing, PHPunit, Coder y JenkinsLa Drupalera
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a DockerOpen Canarias
 
Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Docker Ecosystem: Engine, Compose, Machine, Swarm, RegistryDocker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Docker Ecosystem: Engine, Compose, Machine, Swarm, RegistryMario IC
 
Java Dev Day 2019 No kuberneteen por convivir
Java Dev Day 2019  No kuberneteen por convivirJava Dev Day 2019  No kuberneteen por convivir
Java Dev Day 2019 No kuberneteen por convivirDomingo Suarez Torres
 

Tendances (20)

Introducción a Heroku (by Liquid Kloud)
Introducción a Heroku (by Liquid Kloud)Introducción a Heroku (by Liquid Kloud)
Introducción a Heroku (by Liquid Kloud)
 
Intro a Heroku
Intro a HerokuIntro a Heroku
Intro a Heroku
 
[Drupal campspain2017] Contribuir a Drupal, de 0 a 100
[Drupal campspain2017] Contribuir a Drupal, de 0 a 100[Drupal campspain2017] Contribuir a Drupal, de 0 a 100
[Drupal campspain2017] Contribuir a Drupal, de 0 a 100
 
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
 
Java day 2018 -> Integración y entrega continua no es más trabajo
Java day 2018 ->  Integración y entrega continua no es más trabajoJava day 2018 ->  Integración y entrega continua no es más trabajo
Java day 2018 -> Integración y entrega continua no es más trabajo
 
Vagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de usoVagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de uso
 
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallosTesteando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
 
Un recorrido por las herramientas de software libre que uso cada día, en los ...
Un recorrido por las herramientas de software libre que uso cada día, en los ...Un recorrido por las herramientas de software libre que uso cada día, en los ...
Un recorrido por las herramientas de software libre que uso cada día, en los ...
 
Git y drupal
Git y drupalGit y drupal
Git y drupal
 
Fury - Docker Meetup
Fury - Docker MeetupFury - Docker Meetup
Fury - Docker Meetup
 
Dev ops infraestructura agil con open source
Dev ops   infraestructura agil con open sourceDev ops   infraestructura agil con open source
Dev ops infraestructura agil con open source
 
Desplegando código con Phing, PHPunit, Coder y Jenkins
Desplegando código con Phing, PHPunit, Coder y JenkinsDesplegando código con Phing, PHPunit, Coder y Jenkins
Desplegando código con Phing, PHPunit, Coder y Jenkins
 
Docker containers-itb-2021
Docker containers-itb-2021Docker containers-itb-2021
Docker containers-itb-2021
 
Conceptos avanzados en docker
Conceptos avanzados en dockerConceptos avanzados en docker
Conceptos avanzados en docker
 
Contenedores como Servicio con Docker
Contenedores como Servicio con DockerContenedores como Servicio con Docker
Contenedores como Servicio con Docker
 
DevOps: una breve introducción
DevOps: una breve introducciónDevOps: una breve introducción
DevOps: una breve introducción
 
Introduction to docker. Stratio
Introduction to docker. StratioIntroduction to docker. Stratio
Introduction to docker. Stratio
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Docker Ecosystem: Engine, Compose, Machine, Swarm, RegistryDocker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry
 
Java Dev Day 2019 No kuberneteen por convivir
Java Dev Day 2019  No kuberneteen por convivirJava Dev Day 2019  No kuberneteen por convivir
Java Dev Day 2019 No kuberneteen por convivir
 

En vedette

Game of Codes: the Battle for CI
Game of Codes: the Battle for CIGame of Codes: the Battle for CI
Game of Codes: the Battle for CIAtlassian
 
Continuous Delivery with Jenkins and Wildfly (2014)
Continuous Delivery with Jenkins and Wildfly (2014)Continuous Delivery with Jenkins and Wildfly (2014)
Continuous Delivery with Jenkins and Wildfly (2014)Tracy Kennedy
 
Gitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTreeGitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTreeTeerapat Khunpech
 
Bamboo - an introduction
Bamboo - an introductionBamboo - an introduction
Bamboo - an introductionSven Peters
 
Dockercon2015 bamboo
Dockercon2015 bambooDockercon2015 bamboo
Dockercon2015 bambooSteve Smith
 
Git and GitHub for Documentation
Git and GitHub for DocumentationGit and GitHub for Documentation
Git and GitHub for DocumentationAnne Gentle
 
GitFlow, SourceTree and GitLab
GitFlow, SourceTree and GitLabGitFlow, SourceTree and GitLab
GitFlow, SourceTree and GitLabShinu Suresh
 
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and ComposeDockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and ComposeDocker, Inc.
 
Rise of the Machines - Automate your Development
Rise of the Machines - Automate your DevelopmentRise of the Machines - Automate your Development
Rise of the Machines - Automate your DevelopmentSven Peters
 
Getting started with Jenkins
Getting started with JenkinsGetting started with Jenkins
Getting started with JenkinsEdureka!
 
Master Continuous Delivery with CloudBees Jenkins Platform
Master Continuous Delivery with CloudBees Jenkins PlatformMaster Continuous Delivery with CloudBees Jenkins Platform
Master Continuous Delivery with CloudBees Jenkins Platformdcjuengst
 
Using Docker for Testing
Using Docker for TestingUsing Docker for Testing
Using Docker for TestingCarlos Sanchez
 
Git 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using GitGit 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using GitGeoff Hoffman
 
Introduction to Git/Github - A beginner's guide
Introduction to Git/Github - A beginner's guideIntroduction to Git/Github - A beginner's guide
Introduction to Git/Github - A beginner's guideRohit Arora
 
Jenkins Docker
Jenkins DockerJenkins Docker
Jenkins DockerAlex Soto
 
Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners HubSpot
 
DevOps and Continuous Delivery reference architectures for Docker
DevOps and Continuous Delivery reference architectures for DockerDevOps and Continuous Delivery reference architectures for Docker
DevOps and Continuous Delivery reference architectures for DockerSonatype
 
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)Andrew Bayer
 

En vedette (20)

Game of Codes: the Battle for CI
Game of Codes: the Battle for CIGame of Codes: the Battle for CI
Game of Codes: the Battle for CI
 
Continuous Delivery with Jenkins and Wildfly (2014)
Continuous Delivery with Jenkins and Wildfly (2014)Continuous Delivery with Jenkins and Wildfly (2014)
Continuous Delivery with Jenkins and Wildfly (2014)
 
Gitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTreeGitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTree
 
Bamboo - an introduction
Bamboo - an introductionBamboo - an introduction
Bamboo - an introduction
 
Git best practices workshop
Git best practices workshopGit best practices workshop
Git best practices workshop
 
Dockercon2015 bamboo
Dockercon2015 bambooDockercon2015 bamboo
Dockercon2015 bamboo
 
Git and GitHub for Documentation
Git and GitHub for DocumentationGit and GitHub for Documentation
Git and GitHub for Documentation
 
GitFlow, SourceTree and GitLab
GitFlow, SourceTree and GitLabGitFlow, SourceTree and GitLab
GitFlow, SourceTree and GitLab
 
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and ComposeDockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
 
Rise of the Machines - Automate your Development
Rise of the Machines - Automate your DevelopmentRise of the Machines - Automate your Development
Rise of the Machines - Automate your Development
 
Getting started with Jenkins
Getting started with JenkinsGetting started with Jenkins
Getting started with Jenkins
 
Master Continuous Delivery with CloudBees Jenkins Platform
Master Continuous Delivery with CloudBees Jenkins PlatformMaster Continuous Delivery with CloudBees Jenkins Platform
Master Continuous Delivery with CloudBees Jenkins Platform
 
Using Docker for Testing
Using Docker for TestingUsing Docker for Testing
Using Docker for Testing
 
Git 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using GitGit 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using Git
 
Introduction to Git/Github - A beginner's guide
Introduction to Git/Github - A beginner's guideIntroduction to Git/Github - A beginner's guide
Introduction to Git/Github - A beginner's guide
 
Jenkins Docker
Jenkins DockerJenkins Docker
Jenkins Docker
 
Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners
 
DevOps and Continuous Delivery reference architectures for Docker
DevOps and Continuous Delivery reference architectures for DockerDevOps and Continuous Delivery reference architectures for Docker
DevOps and Continuous Delivery reference architectures for Docker
 
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
 
Speaking part 3
Speaking part 3Speaking part 3
Speaking part 3
 

Similaire à Ic maven jenkins_sonar

Breve introducción práctica al DevOps - (es) 2021_03_18
Breve introducción práctica al DevOps -  (es) 2021_03_18Breve introducción práctica al DevOps -  (es) 2021_03_18
Breve introducción práctica al DevOps - (es) 2021_03_18Young Suk Ahn Park
 
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2 JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2 César Pajares
 
Temario java web_j2_ee_02
Temario java web_j2_ee_02Temario java web_j2_ee_02
Temario java web_j2_ee_02anyeni
 
TEMA Nº 2: ENTORNO DE DESARROLLO
TEMA Nº 2: ENTORNO DE DESARROLLOTEMA Nº 2: ENTORNO DE DESARROLLO
TEMA Nº 2: ENTORNO DE DESARROLLOAnyeni Garay
 
Temario java web_j2_ee_02
Temario java web_j2_ee_02Temario java web_j2_ee_02
Temario java web_j2_ee_02anyeni
 
TEMA Nº 2: ENTORNO DE DESARROLLO
TEMA Nº 2: ENTORNO DE DESARROLLOTEMA Nº 2: ENTORNO DE DESARROLLO
TEMA Nº 2: ENTORNO DE DESARROLLOanyeni
 
TEMA Nº 2: ENTORNO DE DESARROLLO
TEMA Nº 2: ENTORNO DE DESARROLLOTEMA Nº 2: ENTORNO DE DESARROLLO
TEMA Nº 2: ENTORNO DE DESARROLLOanyeni
 
273 Suplemento
273 Suplemento273 Suplemento
273 Suplementocincblaves
 
Primeros pasos tema_11_bis
Primeros pasos tema_11_bisPrimeros pasos tema_11_bis
Primeros pasos tema_11_bisRamón Martínez
 
Continuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudioContinuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudioOsvaldo
 
Continuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudioContinuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudioOsvaldo
 
Continuous Integration
Continuous Integration Continuous Integration
Continuous Integration jose diaz
 
515664007 como-instalar-y-configurar-wds-en-windows-server-2016-solvetic (1)
515664007 como-instalar-y-configurar-wds-en-windows-server-2016-solvetic (1)515664007 como-instalar-y-configurar-wds-en-windows-server-2016-solvetic (1)
515664007 como-instalar-y-configurar-wds-en-windows-server-2016-solvetic (1)Francisco Dìaz
 
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+DinLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+DinLabFIB
 
Instalacion Weblogic Server 11g Linux
Instalacion Weblogic Server 11g LinuxInstalacion Weblogic Server 11g Linux
Instalacion Weblogic Server 11g LinuxMoisés Elías Araya
 
Mi Taller Digital - Brigadas Tecnológicas sesión nº 2
Mi Taller Digital - Brigadas Tecnológicas sesión nº 2Mi Taller Digital - Brigadas Tecnológicas sesión nº 2
Mi Taller Digital - Brigadas Tecnológicas sesión nº 2Enlaces Mineduc
 
Proyectos JAVA con maven
Proyectos JAVA con mavenProyectos JAVA con maven
Proyectos JAVA con mavenJuan Vladimir
 

Similaire à Ic maven jenkins_sonar (20)

Breve introducción práctica al DevOps - (es) 2021_03_18
Breve introducción práctica al DevOps -  (es) 2021_03_18Breve introducción práctica al DevOps -  (es) 2021_03_18
Breve introducción práctica al DevOps - (es) 2021_03_18
 
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2 JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2
 
Temario java web_j2_ee_02
Temario java web_j2_ee_02Temario java web_j2_ee_02
Temario java web_j2_ee_02
 
TEMA Nº 2: ENTORNO DE DESARROLLO
TEMA Nº 2: ENTORNO DE DESARROLLOTEMA Nº 2: ENTORNO DE DESARROLLO
TEMA Nº 2: ENTORNO DE DESARROLLO
 
Temario java web_j2_ee_02
Temario java web_j2_ee_02Temario java web_j2_ee_02
Temario java web_j2_ee_02
 
TEMA Nº 2: ENTORNO DE DESARROLLO
TEMA Nº 2: ENTORNO DE DESARROLLOTEMA Nº 2: ENTORNO DE DESARROLLO
TEMA Nº 2: ENTORNO DE DESARROLLO
 
TEMA Nº 2: ENTORNO DE DESARROLLO
TEMA Nº 2: ENTORNO DE DESARROLLOTEMA Nº 2: ENTORNO DE DESARROLLO
TEMA Nº 2: ENTORNO DE DESARROLLO
 
273 Suplemento
273 Suplemento273 Suplemento
273 Suplemento
 
Primeros pasos tema_11_bis
Primeros pasos tema_11_bisPrimeros pasos tema_11_bis
Primeros pasos tema_11_bis
 
Continuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudioContinuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudio
 
Continuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudioContinuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudio
 
Continuous Integration
Continuous Integration Continuous Integration
Continuous Integration
 
Integrando sonar
Integrando sonarIntegrando sonar
Integrando sonar
 
Meetup V.E.No.M. y docker
Meetup V.E.No.M. y dockerMeetup V.E.No.M. y docker
Meetup V.E.No.M. y docker
 
515664007 como-instalar-y-configurar-wds-en-windows-server-2016-solvetic (1)
515664007 como-instalar-y-configurar-wds-en-windows-server-2016-solvetic (1)515664007 como-instalar-y-configurar-wds-en-windows-server-2016-solvetic (1)
515664007 como-instalar-y-configurar-wds-en-windows-server-2016-solvetic (1)
 
Netbeans ide 7.2
Netbeans ide 7.2Netbeans ide 7.2
Netbeans ide 7.2
 
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+DinLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
inLab FIB MeteorJS workshop by uLab UPC - Telefonica I+D
 
Instalacion Weblogic Server 11g Linux
Instalacion Weblogic Server 11g LinuxInstalacion Weblogic Server 11g Linux
Instalacion Weblogic Server 11g Linux
 
Mi Taller Digital - Brigadas Tecnológicas sesión nº 2
Mi Taller Digital - Brigadas Tecnológicas sesión nº 2Mi Taller Digital - Brigadas Tecnológicas sesión nº 2
Mi Taller Digital - Brigadas Tecnológicas sesión nº 2
 
Proyectos JAVA con maven
Proyectos JAVA con mavenProyectos JAVA con maven
Proyectos JAVA con maven
 

Dernier

R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 

Dernier (20)

R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 

Ic maven jenkins_sonar

  • 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. 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. 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. 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. 21.10.15 Your name here (insert->page number) 5 INTEGRACION CONTINUA ¿SOLUCION? INTEGRACION CONTINUA
  • 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. 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. 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. 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. 21.10.15 Your name here (insert->page number) 10 MAVEN
  • 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. 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. 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. 21.10.15 Your name here (insert->page number) 14 MAVEN MAVEN: POM (Project Object Model)
  • 15. 21.10.15 Your name here (insert->page number) 15 MAVEN MAVEN: POM (Project Object Model)
  • 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. 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. 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. 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. 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.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. 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. 21.10.15 Your name here (insert->page number) 23 SONAR QUBE
  • 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. 21.10.15 Your name here (insert->page number) 25 SONAR ANALISIS SONAR
  • 26. 21.10.15 Your name here (insert->page number) 26 SONAR ARQUITECTURA SONAR
  • 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. 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. 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. 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. 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. 21.10.15 Your name here (insert->page number) 32 SONAR ADMINISTRACION DE SONAR
  • 33. 21.10.15 Your name here (insert->page number) 33 SONAR GESTION DE WIDGETS y PLUGINS  Podemos personalizar el Dashboard con widgets
  • 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. 21.10.15 Your name here (insert->page number) 35 JENKINS
  • 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. 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. 21.10.15 Your name here (insert->page number) 38 JENKINS INSTALACION PLUGINS  Menú Administrar Jenkins/Administrar Plugins
  • 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. 21.10.15 Your name here (insert->page number) 40 DEMO INTEGRACION CONTINUA
  • 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