2012-07-19 15 views
6

Sto provando a configurare un sistema Jenkins in cui un determinato programma deve essere eseguito su una scheda sulla rete, accessibile tramite telnet. Stiamo parlando di centinaia di tali lavori qui, quindi installeremo più schede. Pertanto, a ogni lavoro deve essere assegnata una scheda, ma il problema è che solo un lavoro può avere una determinata scheda allo stesso tempo, altrimenti il ​​programma fallisce.Jenkins - Gestione di un pool di risorse

La soluzione che ho adesso sta usando un setup master-slave dove mi collego alla stessa macchina usando SSH (quindi un master e più slave sulla stessa macchina). Ciascuno dei nodi slave ha quindi un'etichetta per l'indirizzo IP a cui il programma deve telnetare. Funziona, in base alla pianificazione, ma potrebbe causare problemi poiché tutti i nodi si connettono utilizzando SSH alla stessa macchina. La connessione alle schede tramite SSH non è un'opzione.

C'è un modo per ottenere la stessa funzionalità di cui sopra, ma poi senza utilizzare SSH per connettersi alla stessa macchina? Quindi in pratica voglio essere in grado di dire: abbiamo n macchine disponibili, quando arriva un lavoro dargli una di quelle macchine e passargli un'etichetta che appartiene a quella macchina (il suo indirizzo IP in questo caso); ora ci sono le macchine n-1 rimaste. L'esclusione reciproca si avvicina, ma non consente la funzionalità di cui sopra, ei lavori in attesa di una risorsa occupano uno degli esecutori di un nodo.

Grazie mille!

+0

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

risposta

0

Forse dovresti dare un'occhiata al Lock and Latches Plugin. Sei in grado di bloccare una risorsa con questo plugin richiedendo solo il lavoro per bloccare la scheda che desideri.

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

+1

Grazie per la risposta. Penso che questo non funzionerà, principalmente perché voglio che Jenkins distribuisca i lavori sulle schede in modo dinamico, quindi allocando un lavoro a un nodo quando ne è disponibile uno. Credo che questo plugin non faccia nulla, richiedendo di specificare in anticipo su quale scheda dovrebbe essere eseguito. –

4

mi rendo conto il problema è risolto, probabilmente già anni fa, ma nel caso in cui qualcun altro è alla ricerca di una risposta e si imbatte in questo.

È possibile utilizzare il plug-in "Risorse bloccabili" e impostare l'indirizzo IP come nome della risorsa e utilizzare l'etichetta come use test-board-ip.È semplice e facile da usare.

Un'altra possibilità è utilizzare il plug-in "Dispatcher risorse esterne". Fornisce un po 'più di possibilità, ma ha un bug che a volte lo blocca. E sembra che non ci sia più manutenzione (ultimi aggiornamenti dal 2013).

Problemi correlati