SlideShare una empresa de Scribd logo
1 de 52
Descargar para leer sin conexión
Abimael Desales López
Java Developers México
Temario
1. El paradigma de Inspección Continua
2. Instalando Subversion
3. Montando un Servidor de Subversion
4. Instalando el Servidor de CI Jenkins
5. Configurando Jenkins
6. Creando una tarea de build
7. Instalando el plugin Sonar
8. Construyendo y monitoreando tu proyecto
Introducción
En este artículo discutiremos los procesos de inspección e
integración continua y montaremos un entorno de
integración continua para permitir estas prácticas.
Instalaremos Software de Gestión de la Configuración (SCM),
y aprenderemos cómo importar y gestionar el código fuente
hospedado en él. Luego, instalaremos el servidor de
Integración Continua Jenkins (Jenkins CI) y conectaremos un
proyecto en el repositorio al servidor de build para
automatizar el proceso de build. Finalmente, instalaremos el
plugin de Sonar Jenkins y configuraremos un job de build en
Jenkins de forma que automáticamente ejecute un análisis
Sonar después de cada build.
1. El Paradigma de Inspección Continua
La integración continua es una práctica de desarrollo de software
donde el equipo de desarrolladores integra su código
frecuentemente. Cada vez que se emite un cambio al código fuente
es provisto un nuevo build, generalmente a través de un proceso
automatizado. El proyecto crece incrementalmente, un build
estable está siempre disponible para cada iteración, y los errores del
build pueden ser identificados por los miembros del equipo
rápidamente.
La inspección continua se expande y construye sobre esta práctica,
agregando una capa de análisis de calidad en cada iteración.
Mientras la integración continua asegura la estabilidad y minimiza
el esfuerzo de mezclar código fuente en el proyecto, la inspección
continua rastrea los requerimientos de calidad en un esfuerzo para
controlar la calidad del producto final. Para permitir la inspección
continua, se requiere la recolección y análisis de datos después de
que cada build es producido por el servidor de build.
Servidores de integración continua
Un servidor de integración continua o servidor de build es
responsable para ejecutar tareas de build y almacenar datos
históricos y artefactos para cada build. Los builds pueden ser
disparados ya sea manual o automáticamente. Una práctica común
es que el servidor de build construya el proyecto automáticamente
voteando en un repositorio de código siempre que se detecten
modificaciones. El build server absorbe todos los cambios e inicia
un nuevo build. El objetivo es proporcionar un nuevo un build
rápido y verificar que el código nuevo no ha perjudicado el proyecto
en un momento específico cada día, corriendo todas las pruebas
unitarias y herramientas de calidad post-build. El objetivo es tener
un build estable diariamente que ha pasado todas las pruebas
unitarias y requerimientos de calidad y una continuidad más
simple para ayudar a identificar errores.
2. Instalando Subversion
Subversion es un sistema de control de versiones desarrollado
por Apache Software Foundation. Un servidor central de
Subversion administra diferentes versiones de archivos /
proyectos, mientras los desarrolladores se conectan al
servidor vía línea de comandos o herramientas de GUI para
emitir sus cambios al código. Si necesitas más información
visita el sitio de subversion http://subversion.apache.org.
Por abreviar, aquí sólo usaremos los comandos básicos de
subversion para importar un proyecto en subversion y emitir
los cambios a archivos.
A continuación instalaremos el servidor de Subversion y su
cliente en Linux y Windows.
Instalación de Subversion en Ubuntu/Debian
Las distros de Ubutu y Debian mantienen proyectos de
subversion y están disponibles en la herramienta Synaptic
Package Manager. Para instalar el servidor y cliente de
subversion, abre una terminal e ingresa los siguientes
comandos:
$sudo apt-get install subversion
$sudo apt-get install libapache2-svn
Para más información visita el sitio de los paquetes de
subversion de Ubuntu:
http://packages.ubuntu.com/search?keyworks=subversion&exact=1
Instalación de Subversion en Red hat
Para Red Hat Linux, puedes elegir entre tres diferentes
releases, a saber el paquete Subversion estándar, WANdisco,
o Summersoft. WANdisco proporciona un release para cubrir
todas las versiones de Red Hat y requiere registro, mientras
Summersoft hospeda múltiples paquetes rpm, y no requiere
registro.
Para instalar el paquete estándar de Subversion de Red hat,
abre la terminal e ingresa el siguiente comando como root:
#yum install mod_dav_svn subversion
Si aún no tienes instalado Apache, este comando también lo
instala.
Para instalar el release Summersoft, visita
http://the.earth.li.pub/subversion/summersoft.fay.ar.us/pub/subversion/latest,
selecciona el directorio con el número de versión más alto, y
descarga e instala el package rpm para tu distribución Red
Hat.
Para instalar el release de WANdisco ve a
http://wandisco.com/subversion/download#redhat y haz
click en el link Download Subversion Installer. Completa el
formulario de registro y descarga el instalador. Luego, abre
una terminal e ingresa los siguientes comandos como root:
#chmod +x svninstall_rhel5_wandisco.sh
#./svninstall_rhel5_wandisco.sh
Instalación de Subversion en Windows
Para instalación en Windows se utilizará Subversion Edge 2.x
de Collabnet.
Visita la página
http://www.open.collab.net/downloads/subversion y navega
para encontrar las secciones de Collabnet Subversion Edge
2.x para Windows 32-bits o 64-bits. Descarga e instala como
cualquier otra aplicación de Windows a través del wizard.
3.Montando un servidor de Subversion
A continuación, crearemos un repositorio para nuestros proyectos,
configura un usuario llamado svnpackt para que tenga acceso al
repositorio e importa un proyecto Maven dummy llamado packt-
app al repositorio. El proceso es el mismo para Windows y para
Linux.
Creando un repositorio de subversion
Un repositorio de subversion es simplemente un directorio en el
sistema de archivos conteniendo archivos de configuración del
repositorio y los archivos de nuestro proyecto. Para crear un
repositorio abre una terminal e ingresa el siguiente comando:
$svnadmin create $PATH_REPO
Remplaza PATH_REPO con un directorio, por ejemplo /home/dev.
Subversion seguridad y autorización
Subversion soporta diferentes esquemas de autorización, con el
más simple siendo autenticación basada en archivo-password. Los
usernames y passwords son almacenados en un archivo de
password dentro del directorio conf del repositorio. Navega al
directorio $PATH_REPO/conf, abre el archivo svnserve.conf y
descomenta la línea password-db=passwd:
### If SASL is enabled (see below), this file will NOT be used.
### Uncomment the line below to use the default password file.
password-db = passwd
Para crear el usuario svnpackt con password svnpackt, abre el
archivo passwd dentro del directorio PATH_REPO/conf, y agrega la
siguiente línea svnpack=svnpackt.
Importando un proyecto en Subversion
Para crear un proyecto Maven simple, abre la terminal e
ingresa el siguiente comando:
mvn archetype:generate 
-DarchetypeGroupId=org.apache.maven.archetype 
-DgroupId=com.packt.app 
-DartifactId=packt-app
Nota que el comando anterior es una sóla línea dividida con
diagonales invertidas sólo por propósitos de formateo. Debes
ingresarla como una sola línea, omitiendo las diagonales.
Maven comenzará a descargar los archivos de definición de
arquetipos necesarios, y eventualmente será preguntado para
elegir la versión del arquetipo Maven rápido a usar:
1: 1.0-alpha-1
2: 1.0-alpha-2
3: 1.0-alpha-3
4: 1.0-alpha-4
5: 1.0
6: 1.1
Choose a number: 6
Ingresa 6 y presiona Enter para continuar.
[INFO] Using property: groupId = com.packt.app
[INFO] Using property: artifactId = packt-app
Define value for property 'version': 1.0-SNAPSHOT: : 1.0
Cuando te es preguntada la versión, ingresa 1.0 y luego Enter:
Confirm properties configuration:
groupId: com.packt.app
artifactId: packt-app
version: 1.0
package: com.packt.app
Y: : Y
Finalmente presiona Y para completar el proceso. Maven ha
creado el directorio del proyecto packt-app junto con todos
los directorios necesarios. El proyecto contiene una clase
main, en el package com.pack.app.
Antes de que importemos el proyecto en Subversion, debemos
crear un directorio packt-app en el repositorio. Para hacer esto,
ingresa los siguientes comandos –el primero es para iniciar el
servidor de Subversion en caso de que no esté corriendo. Cuando te
sea preguntado el password, ingresa svnpackt. Recuerda remplazar
la variable $PATH_REPO con la ubicación real del repositorio en tu
sistema.
$ svnserve -d
$ svn mkdir svn://localhost/$PATH_REPO/packt-app --username
svnpackt
..
Store password unencrypted (yes/no)? yes
Committed revision 1.
A continuación, abre una terminal y cambia el directorio (cd) a un
nivel superior a donde el directorio packt-app fue creado antes por
Maven.
Luego, ingresa el siguiente comando para importar el proyecto en
Subversion:
$ svn import packt-app svn://localhost/$PATH_REPO/packt-app –
username svnpackt
Adding packt-app/src
Adding packt-app/src/test
Adding packt-app/src/test/java
Adding packt-app/src/test/java/com
Adding packt-app/src/test/java/com/packt
...
Adding packt-app/src/main/java/com/packt/app/App.java
Adding packt-app/pom.xml
Committed revision 2.
Ahora que el proyecto packt-app está almacenado en el repositorio
de Subversion, podemos eliminar la copia local y checarlo otra vez
directamente del servidor. Abre la terminal, cambia el directorio
(cd) a donde quieras hacer el check out del proyecto e ingresa el
siguiente comando:
$ svn co svn://localhost/$PATH_REPO/packt-app
A packt-app/src
A packt-app/src/test
A packt-app/src/test/java
A packt-app/src/test/java/com
A packt-app/src/test/java/com/packt
A packt-app/src/test/java/com/packt/app
A packt-app/src/test/java/com/packt/app/AppTest.java
A packt-app/src/main
A packt-app/src/main/java
A packt-app/src/main/java/com
A packt-app/src/main/java/com/packt
A packt-app/src/main/java/com/packt/app
A packt-app/src/main/java/com/packt/app/App.java
A packt-app/pom.xml
Checked out revision 2.
Siempre que quieras emitir cambios o ejecutar comandos de
Subversion con respecto al proyecto, abre una terminal en el
directorio del proyecto e ingrésalos desde ahí.
4.Instalando el servidor de CI de jenkins
El servidor de Integración Continua Jenkins, formalmente
conocido como Hudson antes que el renombrado del
proyecto tomara lugar, ha sido creado por Kohsuke
Kawaguchi. El sitio oficial del proyecto está disponible en
http://jenkins-ci.org/. Al final del proceso de instalación,
tendrás un servidor Jenkins corriendo en
http://localhost:8080/jenkins.
Así es como
luce la página
de bienvenida.
Instalación de Jenkins en Ubuntu/debian
Ingresa el siguiente comando para agregar la llave necesaria para el
repositorio de package Debian Jenkins:
$ wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-
ci.org.key | sudo apt-key add -
Para agregar el repositorio, agrega la siguiente entrada de línea APT
en tu /etc/apt/sources.list:
deb http://pkg.jenkins-ci.org/debian binary/
Alternativamente, puedes correr la herramienta Synaptic Package
Manager y selecciona Repositories del menú Settings. Selecciona la
pestaña Third Party Software y haz click en el botón Add para
ingresar la línea APT. Haz click en Add Source y Close para cerrar el
popup Repositories
Finalmente abre una terminal e ingresa los siguientes comandos
para ejecutar la instalación:
$ sudo apt-get update
$ sudo apt-get install jenkins
Cuando el proceso de instalación se complete, navega a
http://localhost:8080 para verificar que jenkins está corriendo.
En cuanto al servicio Jenkins es bueno saber que:
Jenkins será lanzado como un demonio al arranque.
El usuario Jenkins será creado para correr este servicio.
Los archivos de log serán colocados en /var/log/jenkins/jenkins.log.
Checa este archivo si existen problemas con Jenkins.
Instalación de Jenkins en Redhat/Fedora/CentOS
Para usar el repositorio rpm de jenkins abre una terminal e ingresa
los siguientes comandos:
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-
ci.org/redhat/jenkins.repo
sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
Luego, el package Jenkins puede ser instalado con:
$yum install yenkins
Cuando el proceso de instalación se complete, navega a
http://localhost:8080 para verificar que Jenkins está funcionando.
Para iniciar, detener o reiniciar el servicio, usa:
$sudo service jenkins start/stop/restart
El servicio de Jenkins corre de la siguiente forma:
Jenkins será lanzado como un demonio al arranque. Véase
etc/init.d/jenkins para más detalles.
El usuario Jenkins es creado para correr este servicio
Los archivos de log serán colocados en
/var/log/jenkins/jenkins.log. Checa este archivo si tienes
problemas con Jenkins.
Instalación de Jenkins en Windows
Descarga y corre el instalador de Jenkins de
http://mirrors.jenkins-ci.org.windows.latest para instalar
Jenkins como un servicio Windows configurado para iniciar
automáticamente al arranque. Para iniciarlo/detenerlo
manualmente, usa el administrador de servicios desde el
panel de control, o la herramienta de línea de comandos sc.
Cuando el proceso de instalación haya terminado, navega a
http://localhost:8080/ para verificar que Jenkins está
corriendo.
5.Configurando Jenkins
Asegúrate que el servicio de Jenkins está corriendo y ve a
http://localhost:8080. De ahí, haz click en el link Manage
Jenkins en el menú izquierdo para visualizar la lista de links
que llevan a diferentes páginas de configuración. Haz click en
el superior, Configure System, para navegar al dashboard de
configuración. Este dashboard caracteriza a muchas
secciones que configuraremos una por una.
Configuración de JDK
Haz click en el botón Add JDK para expandir esta sección. Si tu
JDK instalado no ha sido detectado por Jenkins, tienes que
ingresarlo manualmente en el campo Name. De hecho, a menos
que quieras que Jenkins lo instale automáticamente por ti, en cuyo
caso seleccionas el checkbox Install automatically.
Configuración Maven
Haz click en el botón Add Maven y rellena los campos Name y
MAVEN_HOME para que coincidan con tu propia instalación de
Maven. Jenkins usará esta instalación de Maven para ejecutar
builds. Alternaticamente puedes verificar el checkbox Install
automatically y Jenkins tiene que instalarlo directamente desde
Apache.
Configuración del repositorio
A continuación, configura la sección Subversion como se muestra
en la siguiente pantalla:
Configuración del servidor de E-mail
Jenkins soporta notificación de usuarios en varios eventos de build
como son build failed o build restored. Para habilitar el soporte de
notificaciones, tienes que configurar el servidor SMTP y
autentificación SMTP si aplica –checa tus configuraciones del
servidor de e-mail antes de hacer cambios a esta sección. El valor
del campo Sender E-mail Address será la dirección que Jenkins
usará para enviar e-mail a los usuarios.
Asegurando Jenkins
Por default, Jenkins está abierto para uso y configuración por
cualquiera, no requiriendo autenticación. Navega a la parte
superior y verifica el checkbox Enable Security para expandir la
sección de configuración de seguridad.
Desde Security Realm, selecciona Jenkins’s own user database y
si lo deseas, selecciona el checkbox Allow users to sign up.
Haz click en el radio button Matrix-based security, escribe pack
en el campo input User/group to add, y haz click en el botón
Add. En la nueva fila, selecciona todos los privilegios para
asegurarte que este usuario tiene derechos a todo.
Haz click en el botón Save para preservar los cambios de
configuración y haz click otra vez en el logo Jenkins izquierdo
superior para retornar a home. Ahora serás cuestionado por
log in. No hagas login, en vez de ello haz click en el link
Create Account, y llena el formulario con los detalles de tu
cuenta ingresando packt como username. Porteriormente,
serás capaz de loguearte con tu cuenta pack normalmente.
6.Creando una rutina de build
A continuación, crearemos una rutina de build para el proyecto
Maven packt-app. Loguéate a Jenkins y haz click en el link de la
izquierda New Job. Ingresa un nombre a la rutina y selecciona el
radio button maven 2/3. Luego, haz click en OK para proceder a la
pantalla de configuración del job.
Haz click en el radio button Subversion e ingresa la URL del
repositorio en el proyecto packt. Recuerda remplazar la variable de
entorno $PATH_REPO con el directorio del repositorio como está
configurado en tu propio sistema. Deja el resto de los campos a sus
valores default.
Configura la sección Build Triggers como se muestra en el siguiente screenshot:
El valor Poll SCM 5***** es una expresión cron y significa que Jenkins voteará por el
servidor Subversion cada cinco minutos y si algunos cambios son detectados,
actualizará el código fuente para jalar los cambios y automáticamente ejecutar la rutina
de build packt-app. Haz click en la marca de interrogación junto al campo Poll SCM
para más opciones de configuración
Expresión Cron y scheduling
Cron es un scheduler de jobs basado en tiempo en sistemas
operativos Unix que te permite calendarizar jobs usando
expresiones. Una expresión cron es una cadena de cinco
campos con cada campo representando una unidad de
tiempo diferente como en la forma siguiente:
 Minutos: 0-59
 Horas: 0-23
 Día del mes: 0-23, usa ? si no es aplicable
 Mes: 1-12
 Día de la semana: 0-6 o SUN-SAT (por nombre)
Finalmente haz click en el botón Save y navega atrás a la
página home de Jenkins haciendo click en el logo de la parte
superior izquierda. Tu nuevo job aparece en la lista de jobs al
centro de la página. Puedes hacer click en el botón play de
más a la derecha para iniciar el job, o click en el nombre del
job –por ejemplo, packt-app para ir al dashboard. Para
reconfigurar el job, haz click en configure del menú de la
izquierda. Para navegar los artefactos de build, haz click en
Workspace.
Instalando el plugin Sonar
Antes de probar nuestro nuevo job, vamos a instalar el plugin de
Sonar. El plugin de Sonar le permite a Jenkins iniciar un análisis
Sonar después de cada build. Desde la página home de Jenkins
http://localhost:8080/, haz click en el link Manage Jenkins y
Manage Plugins de la siguiente pantalla. Haz click en la pestaña
Available y buscar (Ctrl+F) para que Sonar encuentre y seleccione
el plugin de Sonar. Luego, haz click en el botón Install without
restart para comenzar el proceso de instalación.
Mientras Jenkins está descargando e instalando el plugin, asegúrate
de checar la opción Restart Jenkins como se muestra en el siguiente
screenshot. Esto asegurará que Jenkins se reinicie inmediatamente
una vez que la instalación se haya completado.
Con el plugin de Sonar instalado, ve a Manage Jenkins | Configure
System, y haz scroll hasta la sección Sonar. Proporciona un nombre
para el servidor Sonar y haz click en Save. Si el servidor Sonar está
instalado en un URL diferente a la default (http://localhost:9090/),
haz click en el botón Advanced… e ingresa la URL del servidor
Sonar en el campo de entrada de la URL del servidor.
A continuación habilitaremos el análisis Sonar como una acción
post-build para nuestra actividad packt-app. Ve atrás a la página
home de Jenkins y de la lista de jobs, selecciona el packt-app y haz
click en su nombre. Click en Configure del menú izquierdo y
navega a la parte inferior de la página. Selecciona el checkbox Sonar
de la sección Post-build Actions para habilitar el análisis Sonar.
Posiciónate sobre los íconos de marca de interrogación en el resto
de las opciones –archivar el artefacto de build, construye otros
objetos dependientes, instala el artefacto a un repositorio de
artefactos Maven, etc. Adicionalmente, puedes habilitar Email
Notification y proporcionar una lista de emails de usuarios para
notificar siempre que un evento de build es disparado por el build
de este job.
Finalmente, haz click en Save para preservar tus cambios y retornar
al dashboard del job.
Construyendo y monitoreando tu proyecto
Para probar nuestro nuevo job, ve a la página home de Jenkins en
http://localhost:8080/ y haz click en el botón play, como se
muestra en el siguiente screenshot, para ejecutar el proceso de
building. El panel Build Executor Status en la izquierda de la
página despliega el progreso del build. Puedes hacer click en el
número de build y luego en el link Console Output en la izquierda
para inspeccionar el log del build y que corre. Nota que después
que el build se complete, un análisis Sonar es disparado y
ejecutado.
Una vez que el build haya finalizado exitosamente, el status del job
se pone en azul. Haz click en el nombre del proyecto para navegar a
la página de detalles.
De aquí, puedes accesar todos los datos de builds pasados,
descargar artefactos de build, y revisar los resultados de tests. Haz
click en el link workspace para descargar artefactos y revisar los
logs de builds.
Haz click en el link Sonar y ve derecho al dashboard Sonar del
proyecto:
GRACIAS
www.facebook.com/JavaDevelopersMexico
No olvides regalarnos un like.
Dudas y comentarios no dudes en escribir en la página o
al siguiente correo
it.adesales@gmail.com

Más contenido relacionado

La actualidad más candente

Git y Jenkins. El futuro en la gestión del ciclo de vida de aplicaciones
Git y Jenkins. El futuro en la gestión del ciclo de vida de aplicacionesGit y Jenkins. El futuro en la gestión del ciclo de vida de aplicaciones
Git y Jenkins. El futuro en la gestión del ciclo de vida de aplicacionesParadigma Digital
 
FROM lost to the Docker 2020
FROM lost to the Docker 2020FROM lost to the Docker 2020
FROM lost to the Docker 2020BelnGonzlezGarca1
 
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
 
Orquestadores para las cuatro estaciones (swarm, kubernetes, mesos y rancher)
Orquestadores para las cuatro estaciones (swarm, kubernetes, mesos y rancher)Orquestadores para las cuatro estaciones (swarm, kubernetes, mesos y rancher)
Orquestadores para las cuatro estaciones (swarm, kubernetes, mesos y rancher)Adrian Garcia Casas
 
Ic maven jenkins_sonar
Ic maven jenkins_sonarIc maven jenkins_sonar
Ic maven jenkins_sonarRocío Muñoz
 
2290277 instalacion-de-un-servidor-de-base-de-datos-postgre sql-apache-jboss-...
2290277 instalacion-de-un-servidor-de-base-de-datos-postgre sql-apache-jboss-...2290277 instalacion-de-un-servidor-de-base-de-datos-postgre sql-apache-jboss-...
2290277 instalacion-de-un-servidor-de-base-de-datos-postgre sql-apache-jboss-...Andrea Guaygua
 
Testing con selenium
Testing con seleniumTesting con selenium
Testing con seleniummarianoshin
 
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
 
Introducción a Vagrant
Introducción a VagrantIntroducción a Vagrant
Introducción a VagrantRaúl Uranga
 
Entornos de desarrollo para symfony2 con vagrant y puppet
Entornos de desarrollo para symfony2 con vagrant y puppetEntornos de desarrollo para symfony2 con vagrant y puppet
Entornos de desarrollo para symfony2 con vagrant y puppetVicent Soria Durá
 
Virtualización y Provisionamiento: Entornos de desarrollo con Vagrant y Puppet
Virtualización y  Provisionamiento: Entornos de desarrollo con  Vagrant y PuppetVirtualización y  Provisionamiento: Entornos de desarrollo con  Vagrant y Puppet
Virtualización y Provisionamiento: Entornos de desarrollo con Vagrant y PuppetRichard Moya
 
Despliegue de aplicaciones PHP
Despliegue de aplicaciones PHPDespliegue de aplicaciones PHP
Despliegue de aplicaciones PHPAlicantePHP
 
2290277 Instalacion De Un Servidor De Base De Datos Postgre Sql Apache Jboss ...
2290277 Instalacion De Un Servidor De Base De Datos Postgre Sql Apache Jboss ...2290277 Instalacion De Un Servidor De Base De Datos Postgre Sql Apache Jboss ...
2290277 Instalacion De Un Servidor De Base De Datos Postgre Sql Apache Jboss ...Freddy Banguero
 

La actualidad más candente (20)

Turbogears_Instalación
Turbogears_InstalaciónTurbogears_Instalación
Turbogears_Instalación
 
Git y Jenkins. El futuro en la gestión del ciclo de vida de aplicaciones
Git y Jenkins. El futuro en la gestión del ciclo de vida de aplicacionesGit y Jenkins. El futuro en la gestión del ciclo de vida de aplicaciones
Git y Jenkins. El futuro en la gestión del ciclo de vida de aplicaciones
 
FROM lost to the Docker 2020
FROM lost to the Docker 2020FROM lost to the Docker 2020
FROM lost to the Docker 2020
 
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
 
Orquestadores para las cuatro estaciones (swarm, kubernetes, mesos y rancher)
Orquestadores para las cuatro estaciones (swarm, kubernetes, mesos y rancher)Orquestadores para las cuatro estaciones (swarm, kubernetes, mesos y rancher)
Orquestadores para las cuatro estaciones (swarm, kubernetes, mesos y rancher)
 
Ic maven jenkins_sonar
Ic maven jenkins_sonarIc maven jenkins_sonar
Ic maven jenkins_sonar
 
2290277 instalacion-de-un-servidor-de-base-de-datos-postgre sql-apache-jboss-...
2290277 instalacion-de-un-servidor-de-base-de-datos-postgre sql-apache-jboss-...2290277 instalacion-de-un-servidor-de-base-de-datos-postgre sql-apache-jboss-...
2290277 instalacion-de-un-servidor-de-base-de-datos-postgre sql-apache-jboss-...
 
Testing con selenium
Testing con seleniumTesting con selenium
Testing con selenium
 
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 ...
 
Introducción a Vagrant
Introducción a VagrantIntroducción a Vagrant
Introducción a Vagrant
 
Entornos de desarrollo para symfony2 con vagrant y puppet
Entornos de desarrollo para symfony2 con vagrant y puppetEntornos de desarrollo para symfony2 con vagrant y puppet
Entornos de desarrollo para symfony2 con vagrant y puppet
 
DevOps: una breve introducción
DevOps: una breve introducciónDevOps: una breve introducción
DevOps: una breve introducción
 
spring-boot-es
spring-boot-esspring-boot-es
spring-boot-es
 
Virtualización y Provisionamiento: Entornos de desarrollo con Vagrant y Puppet
Virtualización y  Provisionamiento: Entornos de desarrollo con  Vagrant y PuppetVirtualización y  Provisionamiento: Entornos de desarrollo con  Vagrant y Puppet
Virtualización y Provisionamiento: Entornos de desarrollo con Vagrant y Puppet
 
Despliegue de aplicaciones PHP
Despliegue de aplicaciones PHPDespliegue de aplicaciones PHP
Despliegue de aplicaciones PHP
 
2290277 Instalacion De Un Servidor De Base De Datos Postgre Sql Apache Jboss ...
2290277 Instalacion De Un Servidor De Base De Datos Postgre Sql Apache Jboss ...2290277 Instalacion De Un Servidor De Base De Datos Postgre Sql Apache Jboss ...
2290277 Instalacion De Un Servidor De Base De Datos Postgre Sql Apache Jboss ...
 
Docker images
Docker imagesDocker images
Docker images
 
Taller docker _es-cl
Taller docker _es-clTaller docker _es-cl
Taller docker _es-cl
 
Selenium
SeleniumSelenium
Selenium
 
Docker y PostgreSQL
Docker y PostgreSQLDocker y PostgreSQL
Docker y PostgreSQL
 

Destacado

Conceptos introductorios al diseño de Servicios SOA
Conceptos introductorios al diseño de Servicios SOAConceptos introductorios al diseño de Servicios SOA
Conceptos introductorios al diseño de Servicios SOAAbimael Desales López
 
Analisis ¿No es eso para personas poco inteligentes?
Analisis ¿No es eso para personas poco inteligentes?Analisis ¿No es eso para personas poco inteligentes?
Analisis ¿No es eso para personas poco inteligentes?Abimael Desales López
 
BDD: Descubriendo qué requiere realmente tu cliente
BDD: Descubriendo qué requiere realmente tu clienteBDD: Descubriendo qué requiere realmente tu cliente
BDD: Descubriendo qué requiere realmente tu clienteJorge Gamba
 
Conferencia Rails: Integracion Continua Y Rails
Conferencia Rails: Integracion Continua Y RailsConferencia Rails: Integracion Continua Y Rails
Conferencia Rails: Integracion Continua Y RailsDavid Calavera
 
Introducción a Ganglia
Introducción a GangliaIntroducción a Ganglia
Introducción a GangliaDardo Valdez
 
Alta disponibilidad con MySQL
Alta disponibilidad con MySQLAlta disponibilidad con MySQL
Alta disponibilidad con MySQLDennis Cohn
 
Software Debt: Qué Es y Cómo Gestionarlo Holísticamente
Software Debt: Qué Es y Cómo Gestionarlo HolísticamenteSoftware Debt: Qué Es y Cómo Gestionarlo Holísticamente
Software Debt: Qué Es y Cómo Gestionarlo HolísticamenteAngel Nuñez
 
Arquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoArquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoGermania Rodriguez
 
Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Ricard Clau
 
Trabucchi, antiguas máquinas de pesca
Trabucchi, antiguas máquinas de pescaTrabucchi, antiguas máquinas de pesca
Trabucchi, antiguas máquinas de pescafreelance
 

Destacado (20)

Conceptos introductorios al diseño de Servicios SOA
Conceptos introductorios al diseño de Servicios SOAConceptos introductorios al diseño de Servicios SOA
Conceptos introductorios al diseño de Servicios SOA
 
Analisis ¿No es eso para personas poco inteligentes?
Analisis ¿No es eso para personas poco inteligentes?Analisis ¿No es eso para personas poco inteligentes?
Analisis ¿No es eso para personas poco inteligentes?
 
Orquestación de Servicios y SOA
Orquestación de Servicios y SOAOrquestación de Servicios y SOA
Orquestación de Servicios y SOA
 
Apache Camel
Apache CamelApache Camel
Apache Camel
 
Apache Camel - Parte II
Apache Camel - Parte IIApache Camel - Parte II
Apache Camel - Parte II
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Orquestación o coreografía
Orquestación o coreografíaOrquestación o coreografía
Orquestación o coreografía
 
Diseño de servicios ATM
Diseño de servicios ATMDiseño de servicios ATM
Diseño de servicios ATM
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
BDD: Descubriendo qué requiere realmente tu cliente
BDD: Descubriendo qué requiere realmente tu clienteBDD: Descubriendo qué requiere realmente tu cliente
BDD: Descubriendo qué requiere realmente tu cliente
 
Conferencia Rails: Integracion Continua Y Rails
Conferencia Rails: Integracion Continua Y RailsConferencia Rails: Integracion Continua Y Rails
Conferencia Rails: Integracion Continua Y Rails
 
Introducción a Ganglia
Introducción a GangliaIntroducción a Ganglia
Introducción a Ganglia
 
Introducción a LDAP
Introducción a LDAPIntroducción a LDAP
Introducción a LDAP
 
Alta disponibilidad con MySQL
Alta disponibilidad con MySQLAlta disponibilidad con MySQL
Alta disponibilidad con MySQL
 
Software Debt: Qué Es y Cómo Gestionarlo Holísticamente
Software Debt: Qué Es y Cómo Gestionarlo HolísticamenteSoftware Debt: Qué Es y Cómo Gestionarlo Holísticamente
Software Debt: Qué Es y Cómo Gestionarlo Holísticamente
 
Arquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoArquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseño
 
OAUTH introducción y entretenida explicación.
OAUTH introducción y entretenida explicación.OAUTH introducción y entretenida explicación.
OAUTH introducción y entretenida explicación.
 
Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2
 
Conferencia Monitoreo de Servidores con Nagios
Conferencia Monitoreo de Servidores con NagiosConferencia Monitoreo de Servidores con Nagios
Conferencia Monitoreo de Servidores con Nagios
 
Trabucchi, antiguas máquinas de pesca
Trabucchi, antiguas máquinas de pescaTrabucchi, antiguas máquinas de pesca
Trabucchi, antiguas máquinas de pesca
 

Similar a Integrando sonar

Proyectos java-con-maven
Proyectos java-con-mavenProyectos java-con-maven
Proyectos java-con-mavenJuan Vladimir
 
Presentación SUbversion
Presentación SUbversionPresentación SUbversion
Presentación SUbversionrxif914u41
 
Presentacion Subversion
Presentacion SubversionPresentacion Subversion
Presentacion SubversionCesar Yanez
 
Test Unitarios y E2E front y Back
Test Unitarios y E2E front y BackTest Unitarios y E2E front y Back
Test Unitarios y E2E front y BackEric Zeidan
 
Instalación KOHA: desarrollo, requerimientos y configuración
Instalación KOHA: desarrollo, requerimientos y configuraciónInstalación KOHA: desarrollo, requerimientos y configuración
Instalación KOHA: desarrollo, requerimientos y configuraciónSocialBiblio
 
[ES] Primeros pasos con Maven
[ES] Primeros pasos con Maven[ES] Primeros pasos con Maven
[ES] Primeros pasos con MavenEudris Cabrera
 
Cómo migrar de source safe a team foundation server 2010
Cómo migrar de source safe a team foundation server 2010Cómo migrar de source safe a team foundation server 2010
Cómo migrar de source safe a team foundation server 2010Diego Vazquez Arce
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosaFco Javier Núñez Berrocoso
 
633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completo633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completoMETROPOLITANO
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completoIgnacio Reyes
 
633f9e tutorial de php y my sql completo (1)
633f9e tutorial de php y my sql completo (1)633f9e tutorial de php y my sql completo (1)
633f9e tutorial de php y my sql completo (1)Eduardo Monroy Husillos
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completoAlberto Martinez
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completoAndrés Amaya
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completoErnesto Gamboa
 
633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completo633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completoUbeimar Navarro Herrera
 
Gestionar mis proyectos con ayuda de CodeIgniter
Gestionar mis proyectos con ayuda de CodeIgniterGestionar mis proyectos con ayuda de CodeIgniter
Gestionar mis proyectos con ayuda de CodeIgniterandrewzg
 

Similar a Integrando sonar (20)

Proyectos java-con-maven
Proyectos java-con-mavenProyectos java-con-maven
Proyectos java-con-maven
 
Presentación SUbversion
Presentación SUbversionPresentación SUbversion
Presentación SUbversion
 
Presentacion Subversion
Presentacion SubversionPresentacion Subversion
Presentacion Subversion
 
Test Unitarios y E2E front y Back
Test Unitarios y E2E front y BackTest Unitarios y E2E front y Back
Test Unitarios y E2E front y Back
 
Instalación KOHA: desarrollo, requerimientos y configuración
Instalación KOHA: desarrollo, requerimientos y configuraciónInstalación KOHA: desarrollo, requerimientos y configuración
Instalación KOHA: desarrollo, requerimientos y configuración
 
[ES] Primeros pasos con Maven
[ES] Primeros pasos con Maven[ES] Primeros pasos con Maven
[ES] Primeros pasos con Maven
 
Subversion
SubversionSubversion
Subversion
 
Cómo migrar de source safe a team foundation server 2010
Cómo migrar de source safe a team foundation server 2010Cómo migrar de source safe a team foundation server 2010
Cómo migrar de source safe a team foundation server 2010
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
 
633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completo633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completo
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completo
 
633f9e tutorial de php y my sql completo (1)
633f9e tutorial de php y my sql completo (1)633f9e tutorial de php y my sql completo (1)
633f9e tutorial de php y my sql completo (1)
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completo
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completo
 
Php andmysql (1)
Php andmysql (1)Php andmysql (1)
Php andmysql (1)
 
Tutorial mysqlphp
Tutorial mysqlphpTutorial mysqlphp
Tutorial mysqlphp
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completo
 
633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completo633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completo
 
Gestionar mis proyectos con ayuda de CodeIgniter
Gestionar mis proyectos con ayuda de CodeIgniterGestionar mis proyectos con ayuda de CodeIgniter
Gestionar mis proyectos con ayuda de CodeIgniter
 
Pdf
PdfPdf
Pdf
 

Más de Abimael Desales López

Aprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDBAprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDBAbimael Desales López
 
Tareas Programadas de Oracle con Toad 10
Tareas Programadas de Oracle con Toad 10Tareas Programadas de Oracle con Toad 10
Tareas Programadas de Oracle con Toad 10Abimael Desales López
 
File Processing - Batch Process Execution
File Processing - Batch Process ExecutionFile Processing - Batch Process Execution
File Processing - Batch Process ExecutionAbimael Desales López
 
File Processing - Process Execution Solution
File Processing - Process Execution SolutionFile Processing - Process Execution Solution
File Processing - Process Execution SolutionAbimael Desales López
 
Patrones de Integración Empresariales
Patrones de Integración EmpresarialesPatrones de Integración Empresariales
Patrones de Integración EmpresarialesAbimael Desales López
 
El mejor enfoque para una arquitectura orientada a servicios
El mejor enfoque para una arquitectura orientada a serviciosEl mejor enfoque para una arquitectura orientada a servicios
El mejor enfoque para una arquitectura orientada a serviciosAbimael Desales López
 
SOA: Principios de Diseño de Servicios - Parte II
SOA: Principios de Diseño de Servicios - Parte IISOA: Principios de Diseño de Servicios - Parte II
SOA: Principios de Diseño de Servicios - Parte IIAbimael Desales López
 

Más de Abimael Desales López (11)

Aprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDBAprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDB
 
Tutorial - Ordenar listas Java
Tutorial   - Ordenar listas JavaTutorial   - Ordenar listas Java
Tutorial - Ordenar listas Java
 
Tareas Programadas de Oracle con Toad 10
Tareas Programadas de Oracle con Toad 10Tareas Programadas de Oracle con Toad 10
Tareas Programadas de Oracle con Toad 10
 
File Processing - Batch Process Execution
File Processing - Batch Process ExecutionFile Processing - Batch Process Execution
File Processing - Batch Process Execution
 
File Processing - Process Execution Solution
File Processing - Process Execution SolutionFile Processing - Process Execution Solution
File Processing - Process Execution Solution
 
Tutorial - REST con java (JAX-RS 2.0)
Tutorial - REST con java (JAX-RS 2.0)Tutorial - REST con java (JAX-RS 2.0)
Tutorial - REST con java (JAX-RS 2.0)
 
Patrones de Integración Empresariales
Patrones de Integración EmpresarialesPatrones de Integración Empresariales
Patrones de Integración Empresariales
 
Jpa modelos de componentes
Jpa   modelos de componentesJpa   modelos de componentes
Jpa modelos de componentes
 
Integración de Aplicaciones
Integración de AplicacionesIntegración de Aplicaciones
Integración de Aplicaciones
 
El mejor enfoque para una arquitectura orientada a servicios
El mejor enfoque para una arquitectura orientada a serviciosEl mejor enfoque para una arquitectura orientada a servicios
El mejor enfoque para una arquitectura orientada a servicios
 
SOA: Principios de Diseño de Servicios - Parte II
SOA: Principios de Diseño de Servicios - Parte IISOA: Principios de Diseño de Servicios - Parte II
SOA: Principios de Diseño de Servicios - Parte II
 

Último

Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar24roberto21
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerenciacubillannoly
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)JuanStevenTrujilloCh
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfcristianrb0324
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointValerioIvanDePazLoja
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024u20211198540
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxLINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxkimontey
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDAVIDROBERTOGALLEGOS
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptxHugoGutierrez99
 

Último (20)

Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
El camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVPEl camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVP
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerencia
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdf
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power Point
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxLINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptx
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
 

Integrando sonar

  • 1. Abimael Desales López Java Developers México
  • 2. Temario 1. El paradigma de Inspección Continua 2. Instalando Subversion 3. Montando un Servidor de Subversion 4. Instalando el Servidor de CI Jenkins 5. Configurando Jenkins 6. Creando una tarea de build 7. Instalando el plugin Sonar 8. Construyendo y monitoreando tu proyecto
  • 3. Introducción En este artículo discutiremos los procesos de inspección e integración continua y montaremos un entorno de integración continua para permitir estas prácticas. Instalaremos Software de Gestión de la Configuración (SCM), y aprenderemos cómo importar y gestionar el código fuente hospedado en él. Luego, instalaremos el servidor de Integración Continua Jenkins (Jenkins CI) y conectaremos un proyecto en el repositorio al servidor de build para automatizar el proceso de build. Finalmente, instalaremos el plugin de Sonar Jenkins y configuraremos un job de build en Jenkins de forma que automáticamente ejecute un análisis Sonar después de cada build.
  • 4. 1. El Paradigma de Inspección Continua La integración continua es una práctica de desarrollo de software donde el equipo de desarrolladores integra su código frecuentemente. Cada vez que se emite un cambio al código fuente es provisto un nuevo build, generalmente a través de un proceso automatizado. El proyecto crece incrementalmente, un build estable está siempre disponible para cada iteración, y los errores del build pueden ser identificados por los miembros del equipo rápidamente. La inspección continua se expande y construye sobre esta práctica, agregando una capa de análisis de calidad en cada iteración. Mientras la integración continua asegura la estabilidad y minimiza el esfuerzo de mezclar código fuente en el proyecto, la inspección continua rastrea los requerimientos de calidad en un esfuerzo para controlar la calidad del producto final. Para permitir la inspección continua, se requiere la recolección y análisis de datos después de que cada build es producido por el servidor de build.
  • 5. Servidores de integración continua Un servidor de integración continua o servidor de build es responsable para ejecutar tareas de build y almacenar datos históricos y artefactos para cada build. Los builds pueden ser disparados ya sea manual o automáticamente. Una práctica común es que el servidor de build construya el proyecto automáticamente voteando en un repositorio de código siempre que se detecten modificaciones. El build server absorbe todos los cambios e inicia un nuevo build. El objetivo es proporcionar un nuevo un build rápido y verificar que el código nuevo no ha perjudicado el proyecto en un momento específico cada día, corriendo todas las pruebas unitarias y herramientas de calidad post-build. El objetivo es tener un build estable diariamente que ha pasado todas las pruebas unitarias y requerimientos de calidad y una continuidad más simple para ayudar a identificar errores.
  • 6. 2. Instalando Subversion Subversion es un sistema de control de versiones desarrollado por Apache Software Foundation. Un servidor central de Subversion administra diferentes versiones de archivos / proyectos, mientras los desarrolladores se conectan al servidor vía línea de comandos o herramientas de GUI para emitir sus cambios al código. Si necesitas más información visita el sitio de subversion http://subversion.apache.org. Por abreviar, aquí sólo usaremos los comandos básicos de subversion para importar un proyecto en subversion y emitir los cambios a archivos. A continuación instalaremos el servidor de Subversion y su cliente en Linux y Windows.
  • 7. Instalación de Subversion en Ubuntu/Debian Las distros de Ubutu y Debian mantienen proyectos de subversion y están disponibles en la herramienta Synaptic Package Manager. Para instalar el servidor y cliente de subversion, abre una terminal e ingresa los siguientes comandos: $sudo apt-get install subversion $sudo apt-get install libapache2-svn Para más información visita el sitio de los paquetes de subversion de Ubuntu: http://packages.ubuntu.com/search?keyworks=subversion&exact=1
  • 8. Instalación de Subversion en Red hat Para Red Hat Linux, puedes elegir entre tres diferentes releases, a saber el paquete Subversion estándar, WANdisco, o Summersoft. WANdisco proporciona un release para cubrir todas las versiones de Red Hat y requiere registro, mientras Summersoft hospeda múltiples paquetes rpm, y no requiere registro. Para instalar el paquete estándar de Subversion de Red hat, abre la terminal e ingresa el siguiente comando como root: #yum install mod_dav_svn subversion Si aún no tienes instalado Apache, este comando también lo instala.
  • 9. Para instalar el release Summersoft, visita http://the.earth.li.pub/subversion/summersoft.fay.ar.us/pub/subversion/latest, selecciona el directorio con el número de versión más alto, y descarga e instala el package rpm para tu distribución Red Hat. Para instalar el release de WANdisco ve a http://wandisco.com/subversion/download#redhat y haz click en el link Download Subversion Installer. Completa el formulario de registro y descarga el instalador. Luego, abre una terminal e ingresa los siguientes comandos como root: #chmod +x svninstall_rhel5_wandisco.sh #./svninstall_rhel5_wandisco.sh
  • 10. Instalación de Subversion en Windows Para instalación en Windows se utilizará Subversion Edge 2.x de Collabnet. Visita la página http://www.open.collab.net/downloads/subversion y navega para encontrar las secciones de Collabnet Subversion Edge 2.x para Windows 32-bits o 64-bits. Descarga e instala como cualquier otra aplicación de Windows a través del wizard.
  • 11. 3.Montando un servidor de Subversion A continuación, crearemos un repositorio para nuestros proyectos, configura un usuario llamado svnpackt para que tenga acceso al repositorio e importa un proyecto Maven dummy llamado packt- app al repositorio. El proceso es el mismo para Windows y para Linux. Creando un repositorio de subversion Un repositorio de subversion es simplemente un directorio en el sistema de archivos conteniendo archivos de configuración del repositorio y los archivos de nuestro proyecto. Para crear un repositorio abre una terminal e ingresa el siguiente comando: $svnadmin create $PATH_REPO Remplaza PATH_REPO con un directorio, por ejemplo /home/dev.
  • 12. Subversion seguridad y autorización Subversion soporta diferentes esquemas de autorización, con el más simple siendo autenticación basada en archivo-password. Los usernames y passwords son almacenados en un archivo de password dentro del directorio conf del repositorio. Navega al directorio $PATH_REPO/conf, abre el archivo svnserve.conf y descomenta la línea password-db=passwd: ### If SASL is enabled (see below), this file will NOT be used. ### Uncomment the line below to use the default password file. password-db = passwd Para crear el usuario svnpackt con password svnpackt, abre el archivo passwd dentro del directorio PATH_REPO/conf, y agrega la siguiente línea svnpack=svnpackt.
  • 13. Importando un proyecto en Subversion Para crear un proyecto Maven simple, abre la terminal e ingresa el siguiente comando: mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetype -DgroupId=com.packt.app -DartifactId=packt-app Nota que el comando anterior es una sóla línea dividida con diagonales invertidas sólo por propósitos de formateo. Debes ingresarla como una sola línea, omitiendo las diagonales. Maven comenzará a descargar los archivos de definición de arquetipos necesarios, y eventualmente será preguntado para elegir la versión del arquetipo Maven rápido a usar:
  • 14. 1: 1.0-alpha-1 2: 1.0-alpha-2 3: 1.0-alpha-3 4: 1.0-alpha-4 5: 1.0 6: 1.1 Choose a number: 6 Ingresa 6 y presiona Enter para continuar. [INFO] Using property: groupId = com.packt.app [INFO] Using property: artifactId = packt-app Define value for property 'version': 1.0-SNAPSHOT: : 1.0 Cuando te es preguntada la versión, ingresa 1.0 y luego Enter:
  • 15. Confirm properties configuration: groupId: com.packt.app artifactId: packt-app version: 1.0 package: com.packt.app Y: : Y Finalmente presiona Y para completar el proceso. Maven ha creado el directorio del proyecto packt-app junto con todos los directorios necesarios. El proyecto contiene una clase main, en el package com.pack.app.
  • 16. Antes de que importemos el proyecto en Subversion, debemos crear un directorio packt-app en el repositorio. Para hacer esto, ingresa los siguientes comandos –el primero es para iniciar el servidor de Subversion en caso de que no esté corriendo. Cuando te sea preguntado el password, ingresa svnpackt. Recuerda remplazar la variable $PATH_REPO con la ubicación real del repositorio en tu sistema. $ svnserve -d $ svn mkdir svn://localhost/$PATH_REPO/packt-app --username svnpackt .. Store password unencrypted (yes/no)? yes Committed revision 1.
  • 17. A continuación, abre una terminal y cambia el directorio (cd) a un nivel superior a donde el directorio packt-app fue creado antes por Maven. Luego, ingresa el siguiente comando para importar el proyecto en Subversion: $ svn import packt-app svn://localhost/$PATH_REPO/packt-app – username svnpackt Adding packt-app/src Adding packt-app/src/test Adding packt-app/src/test/java Adding packt-app/src/test/java/com Adding packt-app/src/test/java/com/packt ... Adding packt-app/src/main/java/com/packt/app/App.java Adding packt-app/pom.xml Committed revision 2.
  • 18. Ahora que el proyecto packt-app está almacenado en el repositorio de Subversion, podemos eliminar la copia local y checarlo otra vez directamente del servidor. Abre la terminal, cambia el directorio (cd) a donde quieras hacer el check out del proyecto e ingresa el siguiente comando: $ svn co svn://localhost/$PATH_REPO/packt-app A packt-app/src A packt-app/src/test A packt-app/src/test/java A packt-app/src/test/java/com A packt-app/src/test/java/com/packt
  • 19. A packt-app/src/test/java/com/packt/app A packt-app/src/test/java/com/packt/app/AppTest.java A packt-app/src/main A packt-app/src/main/java A packt-app/src/main/java/com A packt-app/src/main/java/com/packt A packt-app/src/main/java/com/packt/app A packt-app/src/main/java/com/packt/app/App.java A packt-app/pom.xml Checked out revision 2. Siempre que quieras emitir cambios o ejecutar comandos de Subversion con respecto al proyecto, abre una terminal en el directorio del proyecto e ingrésalos desde ahí.
  • 20. 4.Instalando el servidor de CI de jenkins El servidor de Integración Continua Jenkins, formalmente conocido como Hudson antes que el renombrado del proyecto tomara lugar, ha sido creado por Kohsuke Kawaguchi. El sitio oficial del proyecto está disponible en http://jenkins-ci.org/. Al final del proceso de instalación, tendrás un servidor Jenkins corriendo en http://localhost:8080/jenkins.
  • 21. Así es como luce la página de bienvenida.
  • 22. Instalación de Jenkins en Ubuntu/debian Ingresa el siguiente comando para agregar la llave necesaria para el repositorio de package Debian Jenkins: $ wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins- ci.org.key | sudo apt-key add - Para agregar el repositorio, agrega la siguiente entrada de línea APT en tu /etc/apt/sources.list: deb http://pkg.jenkins-ci.org/debian binary/ Alternativamente, puedes correr la herramienta Synaptic Package Manager y selecciona Repositories del menú Settings. Selecciona la pestaña Third Party Software y haz click en el botón Add para ingresar la línea APT. Haz click en Add Source y Close para cerrar el popup Repositories
  • 23.
  • 24. Finalmente abre una terminal e ingresa los siguientes comandos para ejecutar la instalación: $ sudo apt-get update $ sudo apt-get install jenkins Cuando el proceso de instalación se complete, navega a http://localhost:8080 para verificar que jenkins está corriendo. En cuanto al servicio Jenkins es bueno saber que: Jenkins será lanzado como un demonio al arranque. El usuario Jenkins será creado para correr este servicio. Los archivos de log serán colocados en /var/log/jenkins/jenkins.log. Checa este archivo si existen problemas con Jenkins.
  • 25. Instalación de Jenkins en Redhat/Fedora/CentOS Para usar el repositorio rpm de jenkins abre una terminal e ingresa los siguientes comandos: sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins- ci.org/redhat/jenkins.repo sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key Luego, el package Jenkins puede ser instalado con: $yum install yenkins Cuando el proceso de instalación se complete, navega a http://localhost:8080 para verificar que Jenkins está funcionando. Para iniciar, detener o reiniciar el servicio, usa: $sudo service jenkins start/stop/restart
  • 26. El servicio de Jenkins corre de la siguiente forma: Jenkins será lanzado como un demonio al arranque. Véase etc/init.d/jenkins para más detalles. El usuario Jenkins es creado para correr este servicio Los archivos de log serán colocados en /var/log/jenkins/jenkins.log. Checa este archivo si tienes problemas con Jenkins.
  • 27. Instalación de Jenkins en Windows Descarga y corre el instalador de Jenkins de http://mirrors.jenkins-ci.org.windows.latest para instalar Jenkins como un servicio Windows configurado para iniciar automáticamente al arranque. Para iniciarlo/detenerlo manualmente, usa el administrador de servicios desde el panel de control, o la herramienta de línea de comandos sc. Cuando el proceso de instalación haya terminado, navega a http://localhost:8080/ para verificar que Jenkins está corriendo.
  • 28. 5.Configurando Jenkins Asegúrate que el servicio de Jenkins está corriendo y ve a http://localhost:8080. De ahí, haz click en el link Manage Jenkins en el menú izquierdo para visualizar la lista de links que llevan a diferentes páginas de configuración. Haz click en el superior, Configure System, para navegar al dashboard de configuración. Este dashboard caracteriza a muchas secciones que configuraremos una por una.
  • 29. Configuración de JDK Haz click en el botón Add JDK para expandir esta sección. Si tu JDK instalado no ha sido detectado por Jenkins, tienes que ingresarlo manualmente en el campo Name. De hecho, a menos que quieras que Jenkins lo instale automáticamente por ti, en cuyo caso seleccionas el checkbox Install automatically.
  • 30. Configuración Maven Haz click en el botón Add Maven y rellena los campos Name y MAVEN_HOME para que coincidan con tu propia instalación de Maven. Jenkins usará esta instalación de Maven para ejecutar builds. Alternaticamente puedes verificar el checkbox Install automatically y Jenkins tiene que instalarlo directamente desde Apache.
  • 31. Configuración del repositorio A continuación, configura la sección Subversion como se muestra en la siguiente pantalla:
  • 32. Configuración del servidor de E-mail Jenkins soporta notificación de usuarios en varios eventos de build como son build failed o build restored. Para habilitar el soporte de notificaciones, tienes que configurar el servidor SMTP y autentificación SMTP si aplica –checa tus configuraciones del servidor de e-mail antes de hacer cambios a esta sección. El valor del campo Sender E-mail Address será la dirección que Jenkins usará para enviar e-mail a los usuarios.
  • 33.
  • 34. Asegurando Jenkins Por default, Jenkins está abierto para uso y configuración por cualquiera, no requiriendo autenticación. Navega a la parte superior y verifica el checkbox Enable Security para expandir la sección de configuración de seguridad. Desde Security Realm, selecciona Jenkins’s own user database y si lo deseas, selecciona el checkbox Allow users to sign up.
  • 35. Haz click en el radio button Matrix-based security, escribe pack en el campo input User/group to add, y haz click en el botón Add. En la nueva fila, selecciona todos los privilegios para asegurarte que este usuario tiene derechos a todo.
  • 36. Haz click en el botón Save para preservar los cambios de configuración y haz click otra vez en el logo Jenkins izquierdo superior para retornar a home. Ahora serás cuestionado por log in. No hagas login, en vez de ello haz click en el link Create Account, y llena el formulario con los detalles de tu cuenta ingresando packt como username. Porteriormente, serás capaz de loguearte con tu cuenta pack normalmente.
  • 37. 6.Creando una rutina de build A continuación, crearemos una rutina de build para el proyecto Maven packt-app. Loguéate a Jenkins y haz click en el link de la izquierda New Job. Ingresa un nombre a la rutina y selecciona el radio button maven 2/3. Luego, haz click en OK para proceder a la pantalla de configuración del job.
  • 38. Haz click en el radio button Subversion e ingresa la URL del repositorio en el proyecto packt. Recuerda remplazar la variable de entorno $PATH_REPO con el directorio del repositorio como está configurado en tu propio sistema. Deja el resto de los campos a sus valores default.
  • 39. Configura la sección Build Triggers como se muestra en el siguiente screenshot: El valor Poll SCM 5***** es una expresión cron y significa que Jenkins voteará por el servidor Subversion cada cinco minutos y si algunos cambios son detectados, actualizará el código fuente para jalar los cambios y automáticamente ejecutar la rutina de build packt-app. Haz click en la marca de interrogación junto al campo Poll SCM para más opciones de configuración
  • 40. Expresión Cron y scheduling Cron es un scheduler de jobs basado en tiempo en sistemas operativos Unix que te permite calendarizar jobs usando expresiones. Una expresión cron es una cadena de cinco campos con cada campo representando una unidad de tiempo diferente como en la forma siguiente:  Minutos: 0-59  Horas: 0-23  Día del mes: 0-23, usa ? si no es aplicable  Mes: 1-12  Día de la semana: 0-6 o SUN-SAT (por nombre)
  • 41. Finalmente haz click en el botón Save y navega atrás a la página home de Jenkins haciendo click en el logo de la parte superior izquierda. Tu nuevo job aparece en la lista de jobs al centro de la página. Puedes hacer click en el botón play de más a la derecha para iniciar el job, o click en el nombre del job –por ejemplo, packt-app para ir al dashboard. Para reconfigurar el job, haz click en configure del menú de la izquierda. Para navegar los artefactos de build, haz click en Workspace.
  • 42. Instalando el plugin Sonar Antes de probar nuestro nuevo job, vamos a instalar el plugin de Sonar. El plugin de Sonar le permite a Jenkins iniciar un análisis Sonar después de cada build. Desde la página home de Jenkins http://localhost:8080/, haz click en el link Manage Jenkins y Manage Plugins de la siguiente pantalla. Haz click en la pestaña Available y buscar (Ctrl+F) para que Sonar encuentre y seleccione el plugin de Sonar. Luego, haz click en el botón Install without restart para comenzar el proceso de instalación. Mientras Jenkins está descargando e instalando el plugin, asegúrate de checar la opción Restart Jenkins como se muestra en el siguiente screenshot. Esto asegurará que Jenkins se reinicie inmediatamente una vez que la instalación se haya completado.
  • 43.
  • 44. Con el plugin de Sonar instalado, ve a Manage Jenkins | Configure System, y haz scroll hasta la sección Sonar. Proporciona un nombre para el servidor Sonar y haz click en Save. Si el servidor Sonar está instalado en un URL diferente a la default (http://localhost:9090/), haz click en el botón Advanced… e ingresa la URL del servidor Sonar en el campo de entrada de la URL del servidor.
  • 45. A continuación habilitaremos el análisis Sonar como una acción post-build para nuestra actividad packt-app. Ve atrás a la página home de Jenkins y de la lista de jobs, selecciona el packt-app y haz click en su nombre. Click en Configure del menú izquierdo y navega a la parte inferior de la página. Selecciona el checkbox Sonar de la sección Post-build Actions para habilitar el análisis Sonar. Posiciónate sobre los íconos de marca de interrogación en el resto de las opciones –archivar el artefacto de build, construye otros objetos dependientes, instala el artefacto a un repositorio de artefactos Maven, etc. Adicionalmente, puedes habilitar Email Notification y proporcionar una lista de emails de usuarios para notificar siempre que un evento de build es disparado por el build de este job.
  • 46. Finalmente, haz click en Save para preservar tus cambios y retornar al dashboard del job.
  • 47. Construyendo y monitoreando tu proyecto Para probar nuestro nuevo job, ve a la página home de Jenkins en http://localhost:8080/ y haz click en el botón play, como se muestra en el siguiente screenshot, para ejecutar el proceso de building. El panel Build Executor Status en la izquierda de la página despliega el progreso del build. Puedes hacer click en el número de build y luego en el link Console Output en la izquierda para inspeccionar el log del build y que corre. Nota que después que el build se complete, un análisis Sonar es disparado y ejecutado.
  • 48.
  • 49. Una vez que el build haya finalizado exitosamente, el status del job se pone en azul. Haz click en el nombre del proyecto para navegar a la página de detalles. De aquí, puedes accesar todos los datos de builds pasados, descargar artefactos de build, y revisar los resultados de tests. Haz click en el link workspace para descargar artefactos y revisar los logs de builds.
  • 50.
  • 51. Haz click en el link Sonar y ve derecho al dashboard Sonar del proyecto:
  • 52. GRACIAS www.facebook.com/JavaDevelopersMexico No olvides regalarnos un like. Dudas y comentarios no dudes en escribir en la página o al siguiente correo it.adesales@gmail.com