Table of Contents
Integración continua con Java. Jenkins
¿Qué es la integración continua?
Integración continua es una buena práctica en el desarrollo de software por la que se realizan integraciones automáticas en un proyecto lo más a menudo posible (gracias a que son automáticas) para tratar de encontrar errores y problemas lo antes posible.
Este proceso de integración puede incluir la compilación, ejecución de pruebas (JUnit) y también en análisis de código con herramientas como SonarQube.
En nuestro caso utilizaremos la herramienta Jenkins para realizar esas integraciones. Esto nos permite, cada cierto tiempo o tras determinadas acciones (subir un cambio en el código, fusionar una rama, . . .) lanzar automáticamente la compilación, pruebas y revisión del código del proyecto. Jenkins permite que todo esto ocurra sin necesidad de que tengamos que estar pendientes. Lo único que necesitamos es haber puesto en marcha la herramienta, configurarla y registrar las tareas que queremos que se lleven a cabo con cada proyecto. Es lo que aprenderemos a hacer en este tema.
Es un concepto muy relacionado con la Entrega continua, por la que se hacen entregas de software cada poco tiempo. Los mismos automatismos que permiten la integración continua también hacen posible la entrega continua. Con herramientas como Jenkins también podemos acabar empaquetando y desplegando (poniendo en marcha) la aplicación como última fase del proceso (si todas las demás fueron bien) por lo que en cada ciclo podemos tener una versión de la aplicación lista para usar.
Cuando unimos estos dos conceptos se habla también de Despliegue continuo, al que es habitual referirse por las siglas CI/CD (Continuos Integration/Continuos Delivery en inglés).
¿Qué es Jenkins
Jenkins es un servidor de automatización que permite la puesta en marcha de prácticas de integración y entrega continua que hemos comentado anteriormente.
Máquina virtual con Jenkins
Para comenzar a trabajar con Jenkins primero debemos contar con la herramienta instalada. Es una aplicación web que debe ser instalada en alguna máquina dentro de la red de forma que todos los desarrolladores tengan acceso a ella.
La instalación puede ser un tanto complicada pero nosotros contaremos con una máquina virtual que ya viene con la herramienta instalado y lista para usar. Asi, descargaremos la Máquina virtual con Jenkins de Bitnami y la importaremos desde VirtualBox.
Al iniciar esta nueva máquina virtual podremos ver en la pantalla la IP que le ha sido asignada (192.168.8.107 en mi caso) y también el usuario y contraseña del usuario de SonarQube que ya se encontrará creado en la herramienta (admin en mi caso). También podemos encontrar en esa pantalla (en rojo) el usuario y contraseña del usuario del sistema Linux de la máquina (bitnami/bitnami). Eso permite que podamos también iniciar sesión en el sistema por si tuvieramos que configurar o instalar alguna herramienta que necesitaramos.
Configurar Jenkins para utilizar Java, Git y Maven
Como primer paso tras la puesta en marcha de Jenkins, vamos a configurar las herramientas extenas que éste tendrá que utilizar para realizar sus funciones.
Tendremos que indicarle que JDK utilizar para la compilación de nuestros proyectos, donde está Git para que pueda hacerse con el código de éstos directamente del repositorio de GitHub donde los alojaremos, y también dónde está la herramienta Maven para que sea capaz de construir nuestros proyectos de la misma forma en la que lo hacemos nosotros.
Crear y lanzar jobs en Jenkins
Y una vez que tenemos la herramienta puesta en marcha y configurada, podemos crear el primer Job para que Jenkins pueda compilar un proyecto cuyo código tenemos alojado en un repositorio de GitHub.
© 2020-2021 Santiago Faci