Seleccionar página

Alojamiento en clúster de Jenkins para integración y entregas continuas (CI / CD)

Jenkins es un sistema de entrega e integración continua de código abierto diseñado para garantizar la automatización de la construcción y la implementación. Es adecuado para instalarse en la nube para ejecutar canalizaciones autohospedadas .

Jenkins admite la agrupación en clústeres a través del modo maestro-esclavo. Un proceso de construcción se puede delegar a varios nodos esclavos (trabajadores). Esto permite atender múltiples proyectos en una sola configuración de clúster de Jenkins.

En este artículo, describiremos cómo instalar el clúster de Jenkins con nodos esclavos con autodescubrimiento y auto-registro dentro de un nodo maestro. Elastic PaaS implementó esta solución en Jenkins DevOps Pack que se puede instalar desde Tienda o mediante el asistente de configuración del ambiente como un nuevo ambiente . En este tutorial cubriremos ambos. Además, descubrirá cómo crear un proyecto Java simple alojado en GitHub utilizando el complemento Elastic Maven .

Instalación de paquete DevOps de Jenkins

Instalación desde la tienda

1. Acceda al panel de la plataforma, haga clic en Tienda de aplicaciones> Dev & Admin Tools, busque Jenkins DevOps Pack y presione Instalar .

2. Si es necesario,  el nombre del ambiente y la región de destino .

3. Como se muestra en la imagen siguiente, la topología de Jenkins implementada comprende un nodo maestro y dos nodos de trabajo. 

Instalación como nuevo ambiente

Para simplificar el aprovisionamiento de clústeres, nuestro equipo ha preparado plantillas certificadas de Jenkins para nodos maestros y trabajadores. Una vez que hace clic en Crear nuevo ambiente y agrega el servidor de aplicaciones de Jenkins, la funcionalidad de agrupación automática crea una topología de clúster que comprende un nodo maestro y un nodo trabajador de forma predeterminada. Los nodos trabajadores se pueden escalar horizontalmente hasta 16 nodos que se detectan y registran automáticamente en el nodo maestro y viceversa.

Detalles del clúster de Jenkins

Cada nodo trabajador tiene un proceso ejecutor que se utiliza para construir los proyectos . De forma predeterminada, se puede ejecutar un trabajo a la vez, ya que hay un ejecutor configurado en un trabajador. Puede cambiar el número de ejecutores. Para hacer esto, haga clic en Build Executor Status y presione Configurar en el nodo en el que necesita cambiar el número de ejecutores.

Cambie el número de ejecutores y aplique los cambios con el botón Guardar .

Por ejemplo, si crea tareas atascadas en una cola larga , los nodos de trabajo se pueden escalar horizontalmente de forma manual o automática para acelerar una gran cantidad de compilaciones del proyecto . En tales casos, el paquete garantiza un descubrimiento automático de nuevos nodos trabajadores por parte del nodo maestro de Jenkins Solo lleva un par de minutos expandir el clúster, por ejemplo, hasta 10 trabajadores. 

Presione Modificar arquitectura del ambiente y elija la capa Trabajadores (Java Engine) y realice el escalado horizontal con el botón + en la sección Escalado horizontal del asistente. También es preferible elegir el modo de escalado sin estado , ya que no almacenamos ningún estado importante en los trabajadores.  

Una vez que se completa el escalado, asegúrese de que todos los nodos de trabajo recién creados se hayan descubierto y registrado automáticamente en el maestro. Regrese al panel de administración de Jenkins y haga clic en el enlace Estado del ejecutor de construcciones una vez más para ver todos los miembros del clúster disponibles en un formato amigable.

Cree un nuevo trabajo a través del panel de administración de Jenkins

Ahora veamos cómo crear un trabajo que construya y publique un proyecto simple en un servidor de aplicaciones remoto alojado en Elasticserver PaaS . Aquí usamos un Maven para construir un proyecto HelloWorld desde GitHub e implementarlo con la ayuda del complemento Elasticserver Maven .

1. Después de la instalación, inicie sesión en el panel de administración con las credenciales del correo electrónico respectivo .

2. En la parte superior de la página, haga clic en crear una nueva tarea .

3. Especifique el nombre del proyecto (por ejemplo, mproyecto Java ), elija el crear un proyecto Maven y presione ok .

4. Defina la Descripción del proyecto , marque GitHub y especifique la URL del repositorio. Dentro de este tutorial, usamos https://github.com/jelastic/helloworld.git .

5. El complemento Elasticserver Maven requiere que los parámetros de acceso al ambiente de destino se definan y se pasen al archivo pom.xml ubicado en el repositorio de la aplicación que usted crea. 

La sección del complemento en pom.xml se ve de la siguiente manera:

<plugin>
     <groupId>com.jelastic</groupId>
     <artifactId>jelastic-maven-plugin</artifactId>
     <version>1.9.4</version>
     <configuration>
     <apiToken>${TOKEN}</apiToken>
     <context>${CONTEXT}</context>
     <environment>${TARGET_ENV}</environment>
     <comment>test-plugin</comment>
     <api_hoster>${JELASTIC_API_ENDPOINT}</api_hoster>
     <deployParams>
        <delay>1000</delay>
        <param2>value2</param2>
       ...
        <paramN>valueN</paramN>
     </deployParams>
     </configuration>
</plugin>

Para definir parámetros a través de variables de proyecto, haga clic en la casilla de verificación Esta ejecución debe parametrizarse y agregue la primera variable haciendo clic en Añadir parámetro> Parámetro de cadena .

En cuanto a nuestro ejemplo, utilizamos cuatro variables definidas globalmente para el proyecto:

  • JELASTIC_API_ENDPOINT : define el nombre de host de la plataforma de alojamiento de destino.
  • TARGET_ENV nombre de dominio corto del ambiente de destino de implementación dentro de la plataforma de alojamiento de destino. El ambiente de destino debe tener un servidor de aplicaciones Java , aquí usamos Tomcat . Puede implementar en un ambiente de un solo nodo o en uno agrupado.

  • TOKEN token de acceso para la plataforma en la que se encuentra el ambiente de implementación.

Establezca la Descripción para el nuevo token de acceso y la fecha de caducidad, luego, en el campo API , use una plantilla de complemento Maven predefinida que permitirá que se ejecute el método API DeployApp . Los respectivos parámetros de acceso se seleccionarán automáticamente. 

Finalmente, la sección de variables debería verse como en la siguiente imagen.

6. Luego, desplácese hacia abajo hasta la sección Configurar el origen de código fuente y especifique la URL del repositorio .

7. En la sección Proyecto , establezca las fases que ejecutará Maven : cleanpackage jelastic:deploy . Finalmente, presione el botón Guardar .

                     

Como resultado de las fases de limpieza paquete , obtendrá un archivo war . En nuestro caso, será el archivo helloworld.war como para el proyecto https://github.com/jelastic/helloworld .

El jelastic: despliegue se realiza por Elastic plug-in sobre la marcha durante la construcción del proyecto. El complemento le permite implementar el archivo war recién construido en el servidor de aplicaciones Java en el ambiente remoto .

Cree un proyecto Java con el complemento Maven

1. Haga clic en Construir con parametros(Build with parameters) . Luego, confirme los parámetros que se pasarán al complemento Elasticserver Maven.

2. En el Historial de compilación , puede ver que la compilación se realizó correctamente y que está marcada con un letrero verde junto al # 4 .

Construir depuración dentro de Jenkins

Al pasar el cursor sobre el letrero junto a la compilación, puede abrir los registros de salida de la consola que puede ayudarlo a depurar la compilación del proyecto.

La salida contiene todos los comandos ejecutados durante la compilación. Jenkins distribuye el trabajo entre todos los nodos de trabajo disponibles tratando de cargarlos por igual.

Si desea ejecutar la construcción del proyecto en el nodo específico, vaya a la sección General y habilite la opción Restringir dónde se puede ejecutar este proyecto . Complete el campo Expresión con el nombre de host que requiera como por ejemplo nodo5714 .

Desplegar proyectos Java a través de Jenkins

Si el procedimiento de compilación tiene éxito, significa que Jenkins implementó el archivo de la aplicación de resultados en el servidor de aplicaciones (por ejemplo, miambiente.userbog-j.elasticserver.co ).

Haga clic en el botón Abrir en el navegador Web en el servidor de destino para asegurarse de que la implementación se realizó correctamente.

La página web de la aplicación helloworld.war debe mostrarse de la siguiente manera.

¡Eso es! Ahora ya sabe cómo realizar fácilmente la instalación del clúster de Jenkins en la nube con la compilación e implementación del proyecto Maven . Regístrese ahora para automatizar la integración y entrega continuas de sus aplicaciones Java mediante el clúster maestro-esclavo preconfigurado de Jenkins.