Slide toggle

Bienvenido a mi Blog Personal

Un espacio donde compartir ideas, experimentar y aprender, donde encontrarás información relacionada con la Tecnología, el Marketing Digital y Crecimiento Personal

Sígueme

Follow on FacebookFollow on Google+Tweet about this on TwitterFollow on LinkedInEmail this to someone
Aprende a montar un entorno de integración continua

Los procesos de desarrollo software están en constante evolución y la integración continua se ha convertido en un elemento clave a la hora de mejorar y optimizar el ciclo de desarrollo. En esta entrada voy a explicarte los pasos para montar un entorno básico de ALM (Application Lifecycle Management)

Pero antes de empezar ¿Sabes en qué consiste la integración continua?

Aunque pueda sorprenderte, el concepto de integración continua no es nada reciente, fue definido por Martin Fowler en 2006 de la siguiente manera:

Práctica de desarrollo software donde los miembros del equipo integran su trabajo frecuentemente, al menos una vez al día. Cada integración se verifica con un build automático (que incluye la ejecución de pruebas) para detectar errores de integración tan pronto como sea posible.”

Por tanto la integración continua es una serie de buenas prácticas con el fin de realizar comprobaciones automáticas y periódicas de código con el objetivo de detectar errores lo antes posible  y analizar la calidad del software. Para conseguir esto, contamos con herramientas muy potentes que nos facilitarán la realización de estas tareas.

Los procesos de integración continua pueden ir desde la construcción periódica y programada del software, hasta tareas más complejas como el despliegue continuo en los entornos de producción del software generado.

Herramientas del entorno de integración continua que vamos a utilizar

El entorno estará compuesto por::

  • Maven: Para la gestión y construcción de proyectos JAVA
  • Git: Sistema de control de versiones donde estará alojada la aplicación
  • Jenkins: Servidor de integración continua
  • SonarQube: Herramienta para el análisis de código
  • MySQL: Base de Datos que utilizará sonar para realizar sus operaciones y almacenar sus resultados
  • Nexus OSS: Repositorio de artefactos
  • La aplicación java de prueba será un Hola Mundo que puedes descargar en el este link pero antes necesitarás tener una cuenta creada en Bitbucket

El flujo de integración continua que se pretende crear con este ejemplo es el siguiente:

Ciclo de Integracion Continua

El objetivo que perseguimos es que cada vez que un programador haga un push en el repositorio git remoto y suba código a la rama master, Jenkins lo detecte, compile la aplicación, llame a Sonar para ejecutar los test y realizar el análisis de la calidad del código y, si todo ha ido bien, publique un WAR del proyecto en Nexus.

¿Qué necesitas para empezar a montar el entorno?

Antes de empezar, asegúrate de tener instalado en tu equipo las siguientes herramientas:

  • JDK7 o superior.
  • Un cliente GIT: Si vas a utilizar Eclipse como IDE, te recomiendo usar el plugin egit. En este link puedes encontrar información de cómo descargarlo e instalarlo .
  • Maven 3.x: Puedes descargar una distribución en este link. Te dejo algunos enlaces que te pueden resultar de ayuda a la hora de instalar Maven:
  • Tomcat 8 (puedes utilizar otro si prefieres), como servidor para desplegar y probar la aplicación java
  • Una cuenta en Bitbucket para acceder al repositorio git donde se encuentra la aplicación de ejemplo

¿Cómo obtengo una aplicación de ejemplo?

Decirte que puedes utilizar cualquier aplicación que ya tengas o bien usar una de ejemplo que he subido a mi cuenta de Bickbucket. Para obtener la aplicación y poder modificarla, es necesario transferirla a un repositorio tuyo. Para ello, cuando accedas a este link, será tan sencillo como hacer un Fork

Fork

forkWeb

Una vez hayas hecho el fork, se te habrá creado un nuevo proyecto en tu cuenta de Bitbucket con el nombre que le hayas dado (en mi ejemplo MyWebCI). Accede al proyecto y recupera la URI de acceso y copiala en el portapapeles. En mi caso: https://rcrespop@bitbucket.org/rcrespop/mywebci.git

Si utilizas Eclipse, situate en la perspectiva Git. Te aparecerá una ventana con los repositorios git que ya tuvieras. Si pulsas botón derecho del ratón sobre la vista verás la opción Paste Repository Path or URI. Haz click sobre ella y te aparecerá la siguiente ventana para dar de alta el nuevo repositorio:

new git repository

Completa los pasos que te indica eclipse hasta el final. Cuando termines observa que el nuevo repositorio aparece en la vista que general de Git repositories

Por último solo quedaría importar el proyecto en nuestro workspace de trabajo. Situate en la vista Project Explorer y selecciona Import –> Existing Maven Projects y en root directory indica la ruta del repositorio git local del proyecto

select git repository

Una vez compruebes que el proyecto importado te aparece en tu workspace, lo último que haremos será conectarlo con el repositorio git correspondiente. Situate sobre el proyecto en la vista Project Explorer, botón derecho del ratón Team –> Share Project y selecciona el repositorio git que corresponda

share project

Recuerda actualiza el fichero pom.xml del proyecto para modificar la información de configuración y acceso al repositorio git que acabas de crear. En mi caso:

<scm>
	<connection>scm:git:https://rcrespop@bitbucket.org/rcrespop/mywebci.git</connection>
	<developerConnection>scm:git:https://${username}:${password}@bitbucket.org/rcrespop/mywebci.git</developerConnection>
	<url>scm:git:https://rcrespop@bitbucket.org/rcrespop/mywebci.git</url>
	<tag>HEAD</tag>
</scm>

Por último te recomiendo hacer un mvn clean install (para compilar todos los módulos e instalarlos en el repositorio local de maven), desplegar la aplicación de ejemplo en un servidor web como Tomcat y comprobar que funciona correctamente.

ejecución web

¿Preparado para empezar a montar el entorno de integración continua? pues empecemos!!

  1. Instalación y Configuración de SonarQube y MySQL 
  2. Instalación de Nexus OSS
  3. Instalación  y configuración de Jenkins
  4. Configuración y ejecución de jobs en Jenkins

About the Author:

Arquitecto software interesado en todo lo relacionado con la tecnología, el marketing digital, las habilidades humanas y el desarrollo personal.

4 thoughts on “Aprende a Montar un Entorno de Integración Continua (I)

  • aurelio HernandezEnero 9, 2017 at 22:10

    el tomcat me funciona para otros lenguajes o solo para java

    Reply
    • Roberto CrespoFebrero 7, 2017 at 00:19

      Hola Aurelio! Tomcat es un contenedor web basado en el lenguaje Java que actúa como motor de servlets y JSPs y puesto que fue escrito en Java, funciona en cualquier sistema operativo que disponga de la máquina virtual Java.
      Saludos

      Reply
  • SilviaAbril 20, 2016 at 17:24

    Buenas, me gustaría saber sobre que sistema operativo lo has implementado, los requisitos para implementar
    el entorno de integración continua y cual seria la distribución más senzilla para aplicarlo (Centos, Ubuntu, Windows …)
    Otro apunte seria si solo has usado tomcat o también apache, debido a que en mi caso necesitaría ambos.
    Espero tu respuesta

    Reply
    • Roberto CrespoMayo 22, 2016 at 12:37

      Hola Silvia. Las pruebas las hice sobre OSx pero puedes utilizar perfectamente otras opciones, en función del SO con el que más cómoda que sientas. En mi caso, si hablamos por distribuciones linux, me inclino más por Ubuntu. En cuanto al servidor web, yo he usado Tomcat porque estoy desplegando un aplicación java para el ejemplo
      Saludos

      Reply

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*