Dile a Jenkins que ejecute un proyecto específico en un nodo esclavo en particular

87

¿Cómo le digo a Jenkins que ejecute un proyecto específico en un esclavo en particular?

He configurado un nodo maestro Jenkins y un nodo esclavo que quiero usar para organizar una aplicación. Pero no puedo entender cómo configurar el proyecto para que se ejecute en el nodo esclavo que creé.

Lorin Hochstein
fuente

Respuestas:

84

Establezca la casilla de verificación "Restringir dónde se puede ejecutar este trabajo" en la configuración de su trabajo y especifique el nombre de su esclavo.

Si agrega más esclavos más tarde, puede establecer etiquetas para cada esclavo y especificarlas en las configuraciones de su trabajo.

Consulte esta documentación de referencia:

gareth_bowles
fuente
Gracias. Utilicé bastante tiempo antes de encontrar tu respuesta. Debería haber agregado a esta página wiki.jenkins-ci.org/display/JENKINS/Distributed+builds
Surasin Tancharoen
16

Si está ejecutando un trabajo de Pipeline, primero desea agregar una etiqueta (por ejemplo, 'esclavo') al nodo esclavo (o agente como parece llamarse ahora).

Luego, en el script de canalización, especifique la etiqueta en la que se ejecuta el trabajo:

Tubería declarativa:

pipeline {
    agent {label 'slave'}
    stages {
        ...
    }
}

Canalización con guión:

node (label: 'slave') {
    ...
}

Este trabajo ahora se ejecutará en cualquier nodo con la etiqueta 'esclavo'. Si solo desea que el trabajo se ejecute en este esclavo en particular, no reutilice la etiqueta. Y, por supuesto, la etiqueta no tiene que ser 'esclava'; Puede ser lo que quieras.

Actualizar:

En la canalización programada, si su nodo se llama "Mi nodo", también puede hacer esto:

node ('My Node') {
    ...
}

Si solo desea que el bloque de código se ejecute en ese nodo en particular, esto es útil. Sin embargo, el uso de etiquetas es más flexible y puede facilitar la adición de nodos para compartir la carga de trabajo.

jpyams
fuente
Esto fue muy difícil de encontrar, la documentación para la sintaxis programada está muriendo a favor de declarativa, no puedo migrar todavía, ¡así que gracias!
Mitchell Currie
7

Si desea utilizar Node / Label como parámetro, instale NodeLabel Parameter Plugin

Alex Okrushko
fuente
Tenga en cuenta que si elige el parámetro "Nodo" para un trabajo y desea llamarlo desde Groovy, entonces debe crear un parámetro especial: params += new org.jvnet.jenkins.plugins.nodelabelparameter.LabelParameterValue('testServer', testServerLabel);(en lugar del habitual StringParameterValue).
Nux