Base de conocimientos  /  Cloud Application Manager  /  Integrarse con Jenkins
Base de conocimientos  /  Cloud Application Manager  /  Integrarse con Jenkins

Lanzar esclavos a través de Cloud Application Manager

Actualizado por Gavin Lai y Julio Castanar en 16 de mayo de 2019
Código del artículo: kb/406

En este artículo:

Resumen

Los nodos esclavos ejecutan tareas de Jenkins en máquinas remotas en cualquier nube. Si configura complementos de nube como AWS para lanzar esclavos y luego escribe scripts de líneas de comando para configurar entornos de compilación de esclavos, entonces Cloud Application Manager y el complemento de Jenkins de Cloud Application Manager pueden ahorrarle la molestia de realizar ambas tareas.
Al configurar el nodo esclavo en Cloud Application Manager, puede utilizarlo durante las etapas de desarrollo, prueba, lanzamiento y producción.
Al usar Cloud Application Manager, puede iniciar instancias subordinadas en cualquier sistema operativo, tipo y nube.

Público

Si usa Cloud Application Manager y también utiliza Jenkins para probar e integrar continuamente cambios de código en desarrollo, lanzamiento o producción, le recomendamos usar el complemento de Jenkins para Cloud Application Manager para automatizar por completo las implementaciones sin contacto.

Requisitos previos

  • Acceso a Cloud Application Manager, sitio Applications (aplicaciones), como usuario autorizado de una cuenta activa de Cloud Application Manager.
  • Acceso mediante token a la cuenta de GitHub 

Configurar una casilla esclava

Configure un esclavo de Jenkins en Cloud Application Manager. Luego, llamará a este esclavo desde Jenkins usando el complemento de Cloud Application Manager.
IMPORTANTE: Esta configuración de esclavo está basada en Debian, así que recuerde seleccionar una imagen de Debian Ubuntu Linux en la política al momento de la implementación.

Siga los pasos que se indican a continuación:

1. Ingrese a Cloud Application Manager.

2. Cree una casilla esclava de Jenkins.

En la página Boxes (casillas), haga clic en New (nuevo) > Script. Nombre la casilla, asígnele la etiqueta Linux y haga clic en Save (guardar).

casilla-agregar-script

3. Configure las variables de la casilla.

En Code (código) > Variables (variables), cree las siguientes dos variables de texto en letras mayúsculas y deje sus valores vacíos.

Nombre Tipo Descripción
JENKINS_URL Texto Proporciona espacio donde se encuentra almacenado el URL de Jenkins 
JNLP_SLAVE_OPTIONS Texto Proporciona espacio donde se encuentran almacenadas las opciones del esclavo.

var-jenkins-url

var-jnlp-slave-options.png

4. Configure los scripts de eventos de la casilla.

En Code (codigo) > Events (eventos), agregue un script de install, start y stop. Copie y pegue cada script a continuación, y haga clic en Save (guardar):

Evento Install.

Este script instala la versión más reciente de Java si no está disponible y descarga el agente de esclavo desde el servidor Jenkins.

#!/bin/bash
  sudo groupadd jenkins
  sudo useradd -m -d /var/lib/jenkins -G sudo -g jenkins jenkins
apt-get -y update
  JENKINS_HOME=~jenkins
if [ -z $(which java 2>/dev/null) ]
then
    apt-get install default-jre -y
fi

   apt-get -y install git

# Download the Jenkins agent
wget /jnlpJars/slave.jar -O ${JENKINS_HOME}/slave.jar
Evento Start.

Este script inicia el agente de esclavo.

#!/bin/bash

  JENKINS_HOME=~jenkins
  # Execute the agent and save the PID
  cd ${JENKINS_HOME}
  nohup java -jar ${JENKINS_HOME}/slave.jar  > ${JENKINS_HOME}/slave.log 2>&1 &

  echo $! > ${JENKINS_HOME}/slave.pid
Evento Stop.

Este script anula el agente cuando el período de retención en Jenkins finaliza.

#!/bin/bash

# Stop the agent
SLAVE_PID=$(cat slave.pid)
if [ -n ${SLAVE_PID} ]
then
    kill -9 ${SLAVE_PID}
fi


Luego de la configuración de los códigos de las casillas, verá la página de códigos de esta manera:

página-códigos-casilla

Configurar la política de implementación de esclavos

Cree una política de implementación con metadatos de infraestructura para compilar el entorno de esclavo Jenkins.

  • IMPORTANTE. ¡No implemente la casilla esclava de Jenkins! Solo cree la política. Jenkins usará la política para lanzar el esclavo a demanda a través de Cloud Application Manager al proveedor de nube que elija.

Siga los pasos que se indican a continuación:

1. Crear una casilla para políticas de implementación

En la página Boxes (casillas), haga clic en New (nueva) > Deployment Policy (política de implementación). En el diálogo, seleccione una cuenta de proveedor y asígnele un nombre a la política.
En Claims (notificaciones), ingrese o seleccione una etiqueta de Linux.

  • Las etiquetas de notificaciones definen la política a un nivel alto. Definen el tipo de plataforma, versión, imagen, etc. Al configurar el esclavo en Jenkins, usted proporciona esta etiqueta de notificación para implementar el esclavo. La etiqueta de notificación debe coincidir con la etiqueta de requisitos en la casilla esclava de Jenkins.

casilla-agregar-política

2. Configure la casilla para políticas de implementación.

En Code (código) > Policy (política), edite la política al hacer clic en el lápiz en el lado derecho.

página-código-política

Asegúrese de seleccionar una imagen de Debian Ubuntu Linux, seleccione una regla de firewall que permita el tráfico hacia la instancia, y haga que la IP de la máquina sea efímera para abrirla al tráfico de Internet. Guarde la política.

casilla-editar-política

Configurar el servidor Jenkins para realizar desarrollos con esclavos usando Cloud Application Manager

Ejecute trabajos de Jenkins usando esclavos lanzados a través de Cloud Application Manager en cualquier nube.

Configurar el acceso a su cuenta de Cloud Application Manager

  1. Vaya a Manage Jenkins (gestionar Jenkins) > página Configure System (configurar sistema) en http://<your Jenkins host>/configure.<your Jenkins host>

  2. En Cloud (nube), seleccione Add a new cloud (agregar una nueva nube) y elija la opción ElasticBox.
    Antes deberá instalar el complemento de ElasticBox. Lea al respecto más arriba.

complementos-nube

Configure su acceso a la nube seleccionada y verifique el token de autenticación

configurar-nube

Agregar esclavos de Jenkins 

  1. Configure Jenkins para lanzar esclavos usando la casilla esclava. Haga clic en Add (agregar) para acceder a Slave Configurations (configuraciones de esclavos).
    En esta sección, seleccione la casilla esclava desde el espacio de trabajo de Cloud Application Manager.
    De manera opcional, etiquete la instancia del esclavo.

    Configure el valor Min. No. of Instances (cant. mín. de instancias) en 0 cuando no desee conservar los esclavos inactivos.
    Configure el valor Max. No. of Instances (cant. máx. de instancias) en el número de esclavos que desee en cualquier momento dado para ejecutar trabajos de Jenkins.

    Agregue una etiqueta para identificar el esclavo en Jenkins. Use guiones bajos o guiones, pero no espacios.
    IMPORTANTE. IMPORTANTE: Al crear un trabajo de compilación (como veremos en la próxima sección), puede proporcionar esta etiqueta para hacer que Jenkins seleccione este tipo de esclavo para ejecutar el trabajo.

    configuración-esclavo

    El complemento usa las variables JENKINS_URL y JNLP_SLAVE_OPTIONS para comunicar la información del servidor Jenkins que los esclavos necesitan para conectarse. Déjelas vacías.

    En Deployment (implementación), seleccione una política en el espacio de trabajo de Cloud Application Manager.
    También puede ingresar una etiqueta de notificación para usar cualquier política que coincida con esta etiqueta en el espacio de trabajo de Cloud Application Manager.

    etiqueta-implementación-esclavo

    Haga clic en Advanced (avanzado).

    En Retention Time (tiempo de retención), especifique en minutos cuánto debería esperar el complemento antes de cancelar un esclavo inactivo. Si el esclavo permanece inactivo durante más de 30 minutos, que es el valor predeterminado, el complemento cancela el esclavo de su proveedor. Pero para que esto funcione, su esclavo debe estar conectado al servidor Jenkins.

    En Max. No. of Builds (cant. máx. de versiones), establezca la cantidad máxima de versiones que el esclavo puede ejecutar. Si el esclavo alcanza ese número, el complemento lo cancela.

  2. Guarde la configuración del esclavo.

Habilitar esclavos para que se conecten a través de un puerto

Al definir la casilla del servidor Jenkins, abrimos el puerto 55555 en la red del proveedor de nube para permitir que los esclavos se conecten al servidor Jenkins. En estos pasos, abrimos este puerto (u otro que usted elija) en el servidor Jenkins.

  1. Vaya a Manage Jenkins (gestionar Jenkins) > página Configure global security (configurar seguridad global) en http://<your Jenkins host>/configureSecurity/.<your Jenkins host>

  2. Seleccione Enable Security (habilitar seguridad).
    En la sección Agents (agentes), configure el puerto TCP en Fixed (fijo) 55555 como se indica.

seguridad-global-jenkins

  1. Guarde la configuración.

Anexar un esclavo a un trabajo de compilación

Siga estos pasos para anexar un esclavo desde Cloud Application Manager para ejecutar trabajos de compilación de Jenkins.

  1. Desde la interfaz de gestión del servidor Jenkins, cree un nuevo trabajo o haga clic en Configure (configurar) en cualquier trabajo de compilación.

  2. Seleccione Restrict where this project can be run (restringir ubicaciones donde este proyecto se puede ejecutar).
    En Label Expression (expresión de etiqueta), ingrese y seleccione la etiqueta del esclavo de Cloud Application Manager que asignó al configurarla en Jenkins. Esto provoca que Jenkins elija cualquier esclavo disponible con esa etiqueta.

    trabajo-jenkins-con-esclavos

  3. Guarde el trabajo.

Encontrar un esclavo de Cloud Application Manager

Siga estos pasos para localizar esclavos lanzados a través de Cloud Application Manager en caso de que necesite realizar una depuración.

  1. Vaya a la interfaz de gestión de su servidor Jenkins en http://<your Jenkins host>:8080.

    esclavos-jenkins-activos

  2. Haga clic en el esclavo si se encuentra activo en el panel izquierdo. Normalmente se denomina <Jenkins slave box environment name——–ID>.
    Se muestra información detallada acerca de este esclavo. Vea un ejemplo a continuación:

    información-esclavo-jenkins

  3. Haga clic en "Configure" (configurar). Haga clic en Configure (configurar). Esta opción muestra las configuraciones del esclavo.

    configuración-esclavo-jenkins

  4. Busque el enlace de Cloud Application Manager a la instancia del esclavo. Haga clic para abrir la instancia del esclavo en Cloud Application Manager. Desde allí, puede depurar el esclavo en el editor de ciclo de vida o verificar los registros.

Lanzar entornos de construcción esclavos

Para simplificar el problema de establecer entornos de construcción para cada nube y cada proyecto, automatice construcciones usando esclavos Jenkins con el respaldo de Cloud Application Manager. Este video tutorial con instrucciones paso a paso describe el proceso con la típica aplicación SaaS de creación de tickets basada en JBoss.

Comunicarse con soporte de Cloud Application Manager

Lamentamos que esté teniendo problemas en el Gestor de aplicaciones en la nube. Revise los consejos para solucionar problemas o comuníquese con soporte de Cloud Application Manager para proporcionar detalles y capturas de pantalla de ser posible.

Para problemas relacionados con las llamadas API, envíe el cuerpo de la solicitud junto con los detalles del problema.

En el caso de error de casilla, comparta la casilla en el espacio de trabajo en el que su organización y Cloud Application Manager pueden ingresar y adjunte los registros.

  • Linux: SSH y busque el registro en /var/log/elasticbox/elasticbox-agent.log
  • Windows: Windows: RDP dentro de la instancia para ubicar el registro en ProgramData/ElasticBox/Logs/elasticbox-agent.log