2012-07-19 20 views
6

Estoy tratando de configurar un sistema Jenkins donde cierto programa se debe ejecutar en una placa de la red, al que se accede mediante telnet. Estamos hablando de cientos de esos puestos de trabajo aquí, por lo tanto, vamos a configurar varias juntas. Por lo tanto, a cada trabajo se le debe asignar un tablero, pero la trampa es que solo un trabajo puede tener un cierto tablero al mismo tiempo, de lo contrario, el programa falla.Jenkins: administración de un grupo de recursos

La solución que tengo ahora es usar una configuración de maestro-esclavo en la que me conecto a la misma máquina usando SSH (por lo que un maestro y múltiples esclavos en la misma máquina). Cada uno de los nodos esclavos tiene una etiqueta para la dirección IP a la que el programa debe hacer telnet. Esto funciona, en cuanto a la programación, pero podría causar problemas porque todos los nodos se conectan usando SSH a la misma máquina. Conectarse a las placas con SSH no es una opción.

¿Hay alguna forma de obtener la misma funcionalidad que la anterior, pero sin utilizar SSH para conectar a la misma máquina? Entonces, básicamente, quiero poder decir: tenemos n máquinas disponibles, cuando llega un trabajo, dale una de esas máquinas y pásale una etiqueta que pertenezca a esa máquina (su dirección IP en este caso); ahora quedan n-1 máquinas. La exclusión mutua se acerca, pero no permite la funcionalidad anterior, y los trabajos que esperan un recurso ocupan uno de los ejecutores de un nodo.

¡Muchas gracias!

+0

Similar a esto: http://stackoverflow.com/questions/10950439/resource-mange-external-nodes-in-jenkins-for-tests –

Respuesta

0

Tal vez deberías echarle un vistazo al complemento Lock and Latches. Puede bloquear un recurso con este complemento y solo requiere que el trabajo bloquee la placa que desea.

https://wiki.jenkins-ci.org/display/JENKINS/Locks+and+Latches+plugin

+1

Gracias por la respuesta. Creo que esto no funcionará, principalmente porque quiero que Jenkins distribuya los trabajos sobre los tableros dinámicamente, por lo que se asigna un trabajo a un nodo cuando hay uno disponible. Creo que este complemento no hace tal cosa, lo que requiere que especifique de antemano en qué placa debe ejecutarse. –

4

que dan cuenta de su problema está resuelto, probablemente, ya hace años, pero en caso de que otra persona está en busca de la respuesta y se topa con esto.

Puede usar el complemento "Recursos bloqueables" y establecer la dirección IP como el nombre del recurso y usar la etiqueta como uso test-board-ip.Es simple y fácil de usar.

Otra posibilidad es utilizar el complemento "External Resources dispatcher". Proporciona un poco más de posibilidades, pero tiene un error que hace que cuelgue a veces. Y parece que ya no hay mantenimiento (últimas actualizaciones de 2013).

Cuestiones relacionadas