Ú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:
- JDK 8
- Jenkins 2.32+
- Servidor Couchbase 4.6+
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:
|
1 |
java -jar jenkins.war -httpPort=8080 |
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.

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.

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.

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.

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.

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.

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.

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í:
|
1 |
https://github.com/couchbaselabs/restful-angularjs-java |
Si quieres, puedes utilizar tu propio proyecto. Con el control de código fuente resuelto, pasemos a la sección Construya paso.

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:
|
1 |
mvn limpiar paquete |
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.

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:
|
1 2 |
ps | grep java-fullstack | awk '{print $1}' | xargs kill -9 || true env SERVER.PORT=8081 nohup java -jar ./target/java-fullstack-1.0-SNAPSHOT.jar & |
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.