Nella mia azienda, abbiamo standardizzato su Bamboo per l'integrazione continua. Uno dei nostri prodotti è un server + un insieme di client e vogliamo testare molte combinazioni diverse. Il modo in cui lo facciamo è avere piani con due fasi, la prima che avvia i server e la seconda che avvia i client e esegue i test. Questo è fatto per garantire che abbiamo avviato il server prima di avviare il client che si connette ad esso, e stiamo usando bambù per scegliere su quale agente eseguire il server.
Poiché un lavoro non può essere eseguito su più stadi, il primo stadio contiene un po 'di hack: in realtà avvia il server "in background" in modo che il lavoro "finisca" senza arrestare il server, in modo che il server sia ancora in esecuzione durante la seconda fase (quindi il processo client interrompe il server dopo aver terminato i test inviando un messaggio all'agente che lo esegue). Questo rompe già il modello di bambù, dal momento che bambù non sa che il server è ancora in esecuzione, e quindi non può più far valere che una cosa sta accadendo su un dato agente in un dato momento, quindi molti server possono essere in esecuzione su un agente a un tempo (questo può causare problemi, ma non è il problema principale)
Peggio ancora, dato che uno stage N + 1 non verrà eseguito a meno che tutti i lavori nella fase N abbiano avuto successo, quei lavori "imbrogliano" nel senso che hanno sempre successo, anche se non possono effettivamente avviare il server. Questo è fatto perché più combinazioni di client e amp; i server vengono testati in ogni piano (mi è stato detto che l'abbiamo fatto in questo modo per limitare il numero di piani, non sono sicuro del motivo per cui è importante per il numero di lavori ...)
Alla fine, questo causa molti problemi, soprattutto perché il nostro sistema di bambù è piuttosto congestionato: il primo stadio verrà eseguito rapidamente, non riuscirà ad avviare i server (senza alcuna chiara indicazione di ciò senza qualcuno che guarda i log, di comunque un lavoro "verde"), mentre i lavori nella seconda fase rimarranno in coda per un lungo periodo, prima di fallire immediatamente per mancanza di un server, perdere tempo.
La mia domanda è, c'è un modo migliore per realizzare questo genere di cose con il bambù? Sembra che il modello Bamboo non sia adatto per questo. La ragione principale dei nostri problemi è probabilmente che ci affidiamo a Bamboo per scegliere gli agenti su cui eseguire i server (altrimenti potremmo avviare i server nel lavoro client su richiesta), ma non sono sicuro di poter ottenere che è cambiato facilmente (o come farlo invece).