Tutorial: Uso de Azure Container Instances como agente de compilación de Jenkins

Importante

Muchos servicios de Azure tienen complementos de Jenkins. Algunos de estos complementos dejarán de ser compatibles a partir del 29 de febrero de 2024. La CLI de Azure es la forma recomendada actualmente de integrar Jenkins con los servicios de Azure. Para obtener más información, consulte el artículo Complementos de Jenkins para Azure.

Azure Container Instances (ACI) proporciona un entorno a petición, ampliable y aislado para ejecutar cargas de trabajo en contenedores. Gracias a estos atributos, ACI es una plataforma excelente para ejecutar trabajos de compilación de Jenkins a gran escala. En este artículo se muestra cómo implementar una instancia de ACI y cómo agregarla como agente de compilación permanente para un controlador de Jenkins.

Para más información sobre Azure Container Instances, consulte el artículo acerca de Azure Container Instances.

Requisitos previos

Preparación del controlador de Jenkins

  1. Vaya al portal de Jenkins.

  2. En el menú, seleccione Manage Jenkins (Administrar Jenkins).

  3. En System Configuration (Configuración del sistema), seleccione Configure System (Configurar sistema).

  4. Compruebe que la dirección URL de Jenkins esté establecida en la dirección HTTP de la instalación de Jenkins: http://<your_host>.<your_domain>:8080/.

  5. En el menú, seleccione Manage Jenkins (Administrar Jenkins).

  6. En Security (Seguridad), seleccione Configure Global Security (Configurar seguridad global).

  7. En Agents (Agentes), especifique un puerto Fixed (Fijo) y escriba el número de puerto adecuado para su entorno.

    Ejemplo de configuración: Configure TCP port

  8. Seleccione Guardar.

Creación de un agente de trabajo de Jenkins

  1. Vaya al portal de Jenkins.

  2. En el menú, seleccione Manage Jenkins (Administrar Jenkins).

  3. En System Configuration (Configuración del sistema), seleccione Manage Nodes and Clouds (Administrar nodos y nubes).

  4. En el menú, seleccione New Node (Nuevo nodo).

  5. Escriba un valor para Node Name (Nombre del nodo).

  6. Seleccione Permanent Agent (Agente permanente).

  7. Seleccione Aceptar.

  8. Escriba un valor para Remote root directory (Directorio raíz remoto). Por ejemplo: /home/jenkins/work

  9. Agregue una etiqueta (las etiquetas se usan para agrupar varios agentes en un grupo lógico. Un ejemplo de una etiqueta sería linux agrupar los agentes de Linux). Con el valor de linux.

  10. Establezca Launch method (Método de inicio) en Launch agent by connecting to the master (Iniciar agente mediante conexión al maestro).

  11. Compruebe que se han especificado todos los campos obligatorios:

    Example Jenkins agent configuration

  12. Seleccione Guardar.

  13. En la página estado del agente, debería ver los campos JENKINS_SECRET y AGENT_NAME. En la captura de pantalla siguiente se muestra cómo identificar los valores. Ambos valores son necesarios cuando se crea la instancia de Azure Container Instances.

    The build-agent secret is displays after its successful creation.

Creación de una instancia de Azure Container Instances con la CLI

  1. Use az group create para crear un grupo de recursos de Azure.

    az group create --name my-resourcegroup --location westus
    
  2. Use az container create para crear una instancia de Azure Container Instance. Reemplace los marcadores de posición por los valores que obtuvo al crear el agente de trabajo.

    az container create \
      --name my-dock \
      --resource-group my-resourcegroup \
      --ip-address Public --image jenkins/inbound-agent:latest \
      --os-type linux \
      --ports 80 \
      --command-line "jenkins-agent -url http://jenkinsserver:port <JENKINS_SECRET> <AGENT_NAME>"
    

    Reemplace http://jenkinsserver:port, <JENKINS_SECRET> y <AGENT_NAME> por la información del agente y del controlador de Jenkins. Una vez iniciado el contenedor, se conectará automáticamente al servidor del controlador de Jenkins.

  3. Vuelva al panel de Jenkins y compruebe el estado del agente.

    Agent has started successfully

    Nota:

    Los agentes de Jenkins se conectan al controlador mediante el puerto 5000; asegúrese de que se permite ese puerto de entrada en el controlador de Jenkins.

Creación de un trabajo de compilación

Ahora se crea un trabajo de compilación de Jenkins para mostrar que Jenkins se basa en una instancia Azure Container Instances.

  1. Seleccione New Item (Nuevo elemento), asigne un nombre al proyecto de compilación, como aci-demo, seleccione Freestyle project (Proyecto de estilo libre) y, luego, seleccione OK (Aceptar).

    Box for the name of the build job, and list of project types

  2. En General (General), asegúrese de que Restrict where this project can be run (Restringir el ámbito de ejecución del proyecto) está seleccionado. Escriba linux como expresión de la etiqueta. Esta configuración garantiza que este trabajo de compilación se ejecuta en la nube de ACI.

  3. En Build (Compilar), seleccione Add build step (Agregar paso de compilación) y seleccione Execute Shell (Ejecutar Shell). Escriba echo "aci-demo" como el comando.

  4. Seleccione Guardar.

Ejecución del trabajo de compilación

Para probar el trabajo de compilación y observar Azure Container Instances, inicie una compilación manualmente.

  1. Seleccione Build Now (Compilar ahora) para iniciar un trabajo de compilación. Una vez que se inicie el trabajo, verá un estado similar al de la siguiente imagen:

  2. Haga clic en la compilación número 1 en Build History (Historial de compilación).

  3. Seleccione Console Output (Salida de la consola) para ver la salida de las compilaciones.

Pasos siguientes