45
Maven e IC Maven, SonarQube, Artifactory y Jenkins

Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Maven e IC

Maven, SonarQube, Artifactory y Jenkins

Page 3: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Retos del Desarrollo SW

➢ Proyectos SW grandes y complejos➢ Cada vez más interoperabilidad➢ Muchos equipos de trabajo

(remotos)➢ Planificaciones cortas➢ Cambios en necesidades y requisitos

Page 4: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Desarrollo Tradicional

➢ Construcción / lanzamiento “por petición”

➢ Estado de proyecto -> Compila➢ Bien documentado -> No es una

opción➢ Revisado -> Alguien ha testeado

Resultado: Falla en numerosas ocasiones

Page 5: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Desarrollo Ágil

Page 6: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

¿Qué necesitamos?

➢ Construcción, pruebas y despliegue estandarizado

➢ Construcción, pruebas y despliegues continuos

➢ Asegurar pasos sólidos, reproducibles y analizables

Page 7: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Integración Continua

➢ Definición -> Práctica de integración temprana y frecuente para evitar los problemas de la integración

➢ Objetivo -> Reducir el tiempo de reconstrucción y por tanto reducir costes y tiempo

Page 8: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Integración Continua

➢ Trabajo humano➢ Trabajar en el código➢ Subir al SCM código y test

➢ Trabajo máquina➢ Consulta SCM en busca de cambios➢ Construye a partir del código➢ Ejecuta los test➢ Despliega librerías en el repositorio

Page 9: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Integración Continua

Page 10: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Integración Continua

BUILD

CÓDIGO

CÓDIGO

SCM SERVICIO IC

Page 11: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Integración Continua

Page 12: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

¿Qué es Maven? - Definición

✓ "Software project management and comprehension tool"

✓ "An attempt to apply patterns to a project's build infrastructure in order to promote comprehension and productivity."

- maven.apache.org

Page 13: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

¿Qué es Maven?

➢ Herramienta de construcción➢ Enfocada a la simplicidad

➢ Creación (arquetipos) y gestión (valores por defecto)

➢ Cubre fases de construcción➢ Build Management➢ Testing➢ Release Versioning➢ Deployment

Page 14: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

¿Qué es Maven? - Proyecto

➢ Proyecto Open Source de Apache➢ Desarrollo iniciado en 2001➢ Surgió a partir de ficheros Ant de otros

proyectos Apache➢ Ha pasado por muchas iteraciones➢ La versión actual es Maven 3

http://maven.apache.org

Page 15: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Principios de Maven

➢ Orientado a proyecto➢ Convención sobre configuración➢ Gestión de dependencias

➢ Internas y externas➢ Reutilización a través de repositorios

➢ Internos y externos➢ Extensible a través de plugins

Page 16: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Orientado a Proyecto

➢ Maven modela las construcciones

como un Project Object Model (POM)

➢ Definido en XML en pom.xml

➢ Soporta herencia simple de tipo árbol

➢ Todo POM extiende del Super POM

Page 17: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Convención sobre Configuración

<project> <groupId>com.projectsexception</groupId> <artifactId>redmine-api</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version></project>

Page 18: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Gestión de Dependencias

<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernate.version}</version> </dependency></dependencies>

➢ Escribir una vez➢ Mejorar las

dependencias anidadas➢ Dependencias

consistentes➢ Evitar la búsqueda de

JARs➢ Evitar la búsqueda de

versiones➢ Evitar la autogestión de

librerías➢ Gestión por ámbitos

Page 19: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Repositorios

➢ Almacenan artefactos y dependencias➢ Repositorio Local

➢ Caché local de artefactos➢ Puede eliminarse completamente➢ Útil para construcciones offline➢ Reside en el directorio .m2 del usuario

➢ Repositorio Remoto

Page 20: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Repositorio Remoto

➢ Central Repository almacena todos los artefactos

➢ El local descarga del central (maven.org)

Repositorio Local

Repositorio Remoto

Orden de búsqueda

Page 21: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Repositorio Interno

➢ Repositorio corporativo➢ Suele hacer también de proxy

Repositorio Local

Repositorio Remoto

Orden de búsquedaRepositorio Interno

Page 22: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Repositorios

<repositories> <repository> <id>LocalRepo</id> <name>LocalRepo</name> <url>file://${project.basedir}/lib</url> </repository> <repository> <id>IntraRepo</id> <name>IntraRepo</name> <url>http://intranet/repo</url> </repository> <repository> <id>java-net</id> <url>https://oss.sonatype.org/content/repositories/java-net/</url> </repository></repositories>

Page 23: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Plugins

➢ Ant: Ejecutar tareas AND➢ Hibernate3: Generar POJO's, DAO y

XML Mappings basado en esquemas remotos

➢ Javadoc: Generate javadoc del código

http://maven.apache.org/plugins/http://mojo.codehaus.org/plugins.html

Page 24: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Propiedades

➢ $MAVEN_HOME/conf/settings.xml➢ $USER_HOME/.m2/settings.xml➢ $PROJECT_HOME/pom.xml

<project> <groupId>com.projectsexception</groupId> <artifactId>redmine-api</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <properties> <greeting>hello</greeting> </properties></project>

${basedir}${project.groupId}${greeting}

Page 25: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Perfiles

➢ Variables específicas del despliegue➢ Cambia URLs en base al entorno de

despliegue➢ Cambia código a través de filtrado

según el perfil➢ Simplifica y unifica métodos de

despliegue

Page 26: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Perfiles - Definición

<profile> <id>dev</id> <properties> <name>DEVELOPMENT</name> <filter>dev-filter</filter> <include>dev-includes</include> </properties></profile><profile> <id>pro</id> <properties> <name>PRODUCTION</name> <filter>pro-filter</filter> <include>pro-includes</include> </properties></profile>

Page 27: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Perfiles - Filtrar recursos

<filters> <filter>src/main/filters/${filter}.properties</filter></filters><resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>config.properties</include> <includes> </resource> <resource> <directory>src/main/resources</directory> <filtering>false</filtering> <excludes><exclude>config.properties</exclude></excludes> </resource></resources>

Page 28: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Perfiles - Filtrar recursos web

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.4</version> <configuration> <webResources> <resource> <directory>${basedir}/src/main/webapp/META-INF</directory> <filtering>true</filtering> <targetPath>META-INF</targetPath> <includes> <include>context.xml</include> </includes> </resource> </webResources> </configuration></plugin>

Page 29: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Perfiles - Filtrar recursos web

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.4</version> <configuration> <webResources> <resource> <directory>${basedir}/src/main/includes/${include}</directory> <filtering>true</filtering> <targetPath>WEB-INF</targetPath> </resource> </webResources> </configuration></plugin>

Page 30: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Artifactory

➢ Es un repositorio Maven➢ Lo usaremos si:

➢ Necesitamos almacenar nuestras propias librerías

➢ Poner nuestras librerías disponibles en la red

➢ Podemos controlar el acceso➢ Actúa como proxy de forma

automática

Page 31: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

SonarQube

➢ SonarQube is the central place to manage code quality, offering visual reporting on and across projects and enabling to replay the past to follow metrics evolution

- sonarqube.org

Page 32: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

SonarQube

➢ Servidor web➢ Proyectos envían los datos➢ SonarQube almacena dichos datos

➢ Panel de control que permite ver los datos y la evolución a través de las versiones

➢ Extensible a través de plugins

Page 33: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

SonarQube

➢ CheckStyle - checkstyle.sourceforge.net➢ Findbugs - findbugs.sourceforge.net➢ PMD - pmd.sourceforge.net➢ Más a través de Plugins:

➢ Android➢ JavaScript➢ PHP

➢ MADEJA:www.juntadeandalucia.es/servicios/madeja/contenido/recurso/828

Page 34: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Jenkins

➢ Jenkins provides an easy-to-use so-called continuous integration system, making it easier for developers to integrate changes to the project, and making it easier for users to obtain a fresh build.

-jenkins-ci.org

Page 35: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Alternativas CI

➢ Hudson (mantenido by Oracle)➢ Travis CI (Solution alojada por

Github)➢ Bamboo (Atlassian)➢ TeamCity (JetBrains)➢ Jenkins (fork de Hudson)

➢ Popular➢ Versátil (más de 600 plugins)➢ Desarrollo y comunidad activa (LTS)

Page 36: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Jenkins

➢ Testing➢ Unitarios, funcionales, de integración, de

rendimiento, análisis estático➢ Construcción

➢ Empaquetado, lanzamiento y publicación➢ Despliegue➢ Y más tareas repetitivas...

Page 37: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Jenkins

➢ SCM➢ CVS, Subversion, Git, Mercurial,

Clearcase...➢ Ejecuta

➢ Apache Ant, Apache Maven, shell scripts y comandos batch de Windows

➢ Inicio➢ Commit, cron, otras construcciones,

petición URL o manualmente

Page 38: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Crear un “job” en Jenkins

Page 39: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Crear un “job” en Jenkins

Page 40: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Crear un “job” en Jenkins

Page 41: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Crear un “job” en Jenkins

Page 42: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

¿Cómo monto yo todo esto?

Page 43: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Instalaciones

➢ Maven➢ Descomprime y añade al PATH

➢ SonarQube➢ Descargar y ejecutar

➢ Jenkins➢ WAR o paquete para Windows,

Ubuntu/Debian, Red Hat/Fedora/CentOS, Mac OS X, openSUSE, FreeBSD, OpenBSD, Solaris/OpenIndiana y Gentoo

Page 44: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Solución “ready to use”

clinkerhq.com

Page 45: Maven e IC - Universidad de Sevilla...Maven, SonarQube, Artifactory y Jenkins Presentación Retos del Desarrollo SW Proyectos SW grandes y complejos Cada vez más interoperabilidad

Preguntas

@FedeProEx