Buenas prácticas y tutoriales

Crear una tubería de despliegue continuo con Jenkins y Java

Últimamente he estado trabajando mucho con Jenkins para ejecutar archivos JAR de Java para el despliegue continuo de una de mis aplicaciones. En caso de que no lo haya visto, la demostración clave dada en Couchbase Connect 2016 utilizó Jenkins para construir y reimplementar el backend Java y el frontend Angular cada vez que se detectaba un cambio en GitHub. Esta es la aplicación que ayudé a construir.

Entonces, ¿cómo aproveché Jenkins desplegar esta aplicación Java? Vamos a ver cómo crear un archivo JAR utilizando Jenkins, lo que resulta en un proceso de despliegue continuo que incluye la construcción y el despliegue en un servidor.

Para que quede claro, no voy a explicar cómo utilizar la aplicación Couchbase Connect 2016, a la que voy a llamar GitTalentcon Jenkins, ya que es un poco más complicado. Vamos a empezar poco a poco para obtener una mejor comprensión.

Requisitos

Hay algunos requisitos que deben cumplirse para tener éxito con esta guía. Los encontrará a continuación:

En este ejemplo, Jenkins, el JDK y Couchbase Server residirán en la misma máquina. Esto significa que un script de despliegue continuo de Jenkins sacará código de GitHub, lo construirá usando el JDK, y lo publicará localmente en lugar de en algún servidor remoto. Dicho esto, parte de la automatización se elimina de este ejemplo porque para conseguir que Jenkins construya automáticamente cuando se encuentran commits, los hooks de GitHub requieren una máquina que no sea localhost. La eficacia de esta guía seguirá presente.

Aunque Couchbase es un requisito, no es el objetivo de esta guía. Es necesario que esté presente para la aplicación de ejemplo que vamos a sacar de GitHub.

Configuración de Jenkins con los plugins y dependencias necesarios

En este punto deberías haber descargado Jenkins. Vamos a caminar a través de la configuración, ya que puede ser un poco confuso para un usuario de primera vez.

Puede ejecutar Jenkins ejecutando lo siguiente desde el símbolo del sistema o Terminal:

El comando anterior hará que Jenkins sea accesible en http://localhost:8080 en su navegador web. Al iniciarlo por primera vez, se le guiará a través de un asistente de configuración.

Jenkins Configuration Part 1

Como parte del primer paso de configuración, necesitarás obtener un valor generado para utilizarlo como contraseña de superadministrador.

Después de proporcionar la contraseña según las instrucciones de la pantalla, se le preguntará sobre la instalación de los plugins de Jenkins.

Jenkins Configuration Part 2

Vamos a empezar instalando los plugins sugeridos y luego instalaremos los extras. Puede llevar algo de tiempo, pero una vez instalados los plugins sugeridos se te pedirá que configures tu primera cuenta de usuario administrativo.

Jenkins Configuration Part 3

Puede elegir crear un usuario administrativo o seguir utilizando la contraseña generada cuando trabaje con Jenkins.

Después de crear una cuenta, Jenkins está listo para ser utilizado. Antes de crear nuestro primer flujo de trabajo, o trabajo, necesitamos instalar un plugin adicional.

Manage Jenkins

Deberá elegir Gestionar Jenkins que nos llevará a una lista de secciones de gestión, una de las cuales es una sección para gestionar plugins.

Elija Gestionar plugins y haga una búsqueda del Script posterior a la construcción plugin.

Install Jenkins Post-Build Script Plugin

Este plugin nos permitirá ejecutar scripts en el host Jenkin después de que la compilación se haya completado sin errores.  Necesitamos esto para que Jenkins pueda desplegar el JAR después de que haya sido empaquetado.

Ahora Jenkins en su conjunto ha sido configurado. Si bien está listo para que podamos crear puestos de trabajo, primero vamos a obtener Couchbase listo para salir.

Preparación de Couchbase con un cubo para el almacenamiento de documentos

Couchbase no es lo más destacado de este ejemplo, pero como estamos utilizando uno de mis antiguos proyectos, era un requisito por el proyecto.

Si aún no has descargado Couchbase, hazlo ahora y camina a través de la configuración. Para obtener ayuda con la configuración de Couchbase, echa un vistazo a un artículo anterior Escribí.

Lo importante es el Bucket que vamos a utilizar. Asegúrate de crear un Bucket titulado restful-sample con al menos un índice N1QL primario.

Si necesita ayuda con algo de esto, puede encontrar una reseña completa de nuestro proyecto en aquí. Por supuesto, ese artículo no incluye el despliegue continuo con Jenkins.

Ahora podemos centrarnos en nuestros proyectos.

Creación de un trabajo para crear e implantar una aplicación desarrollada con Java

Con Jenkins y Couchbase listos podemos centrarnos en la creación de un trabajo que controlará nuestro pipeline. Para reiterar nuestro plan, vamos a tirar de GitHub, empaquetar un JAR en el proceso de construcción, y desplegar ese JAR durante el proceso de post-construcción (despliegue).

Sigue adelante y crea un nuevo trabajo en Jenkins. Lo primero que se le pedirá es un nombre de proyecto, así como el tipo de nombre de proyecto.

Jenkins Freestyle Java Project

Asigne un nombre único al trabajo y asegúrese de utilizar Proyecto Freestyle de la lista. Al configurar este proyecto, nuestra primera preocupación es el repositorio de GitHub que vamos a utilizar.

Jenkins Java Project Source Control

Si tu repositorio no es público, no te preocupes ya que puedes añadir credenciales, pero para este ejemplo mi proyecto es público.

Estoy utilizando el proyecto que se encuentra aquí:

Si quieres, puedes utilizar tu propio proyecto. Con el control de código fuente resuelto, pasemos a la sección Construya paso.

Jenkins Build Java Project

Aquí podemos introducir los comandos de shell que queramos para construir la aplicación que se extrajo de Git.

Sólo queremos generar un archivo JAR en este ejemplo, lo que se puede hacer añadiendo el siguiente comando:

Esto nos deja con un archivo JAR en una nueva carpeta objetivo que sólo es relevante para Jenkins en este momento. El paso final es matar cualquier instancia ya en ejecución de la aplicación y ejecutarla de nuevo.

Desde que instalamos el Script de complemento posterior a la construcción podemos definir lo que ocurre con nuestra construcción.

Jenkins Post-Build Java Actions

En este ejemplo no vamos a desplegarlo en otra máquina, pero podríamos. En su lugar vamos a ejecutarlo en la máquina local.

Elija ejecutar un script de shell e incluya lo siguiente:

Lo anterior es hacer un poco de trampa, pero es necesario porque estamos ejecutando todo localmente en la misma máquina.

El primer comando buscará cualquier proceso en ejecución en mi Mac que se parezca a nuestra aplicación Java. Una vez encontrado, matará el proceso. Incluso si no encuentra el proceso devolverá true debido a nuestra tubería. Esto evita que el trabajo falle.

Una vez detenido el proceso, ejecutamos el JAR creado en segundo plano.

Ten en cuenta que tu script puede ser un poco diferente si estás ejecutando localmente en Linux o Windows. En un escenario de producción, es probable que utilice el plugin SSH para Jenkins y empuje el JAR a algún servidor y reinicie el demonio controlador.

Siga adelante e intente ejecutar el trabajo utilizando la función Construir ahora botón. Si no desea iniciarlo manualmente, considere la posibilidad de añadir un gancho o un temporizador cron en el área de configuración que acabamos de explorar.

Si todo va bien, tendrás tu aplicación Java accesible en http://localhost:8081 y se comunicará con Couchbase Server.

Conclusión

Acabas de ver cómo desplegar un archivo JAR en Jenkins para hacer un despliegue continuo de una aplicación Java que se comunica con Couchbase Server. Esta configuración de Jenkins tirará de GitHub, construirá un JAR, y lo desplegará. Si bien debería ser un poco más pulido en un escenario de producción, es una buena manera de empezar.

¿Quieres usar Jenkins para el despliegue continuo de microservicios en contenedores Docker? Echa un vistazo a un artículo anterior que escribí titulado, Despliegue continuo de contenedores de aplicaciones web con Jenkins y Docker.

¿Quieres más información sobre el uso del despliegue continuo de Java con Couchbase? Echa un vistazo a la Portal para desarrolladores de Couchbase para ver ejemplos y documentación.

Te animo a que eches un vistazo al Couchbase Connect 2016 demostración principal si aún no lo ha hecho.

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Nic Raboy, Defensor del Desarrollador, Couchbase

Nic Raboy es un defensor de las tecnologías modernas de desarrollo web y móvil. Tiene experiencia en Java, JavaScript, Golang y una variedad de frameworks como Angular, NativeScript y Apache Cordova. Nic escribe sobre sus experiencias de desarrollo relacionadas con hacer el desarrollo web y móvil más fácil de entender.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.