2009-08-02 6 views
12

Ultimamente ho cercato buildbot e la mancanza di una buona documentazione e di configurazioni di esempio rende difficile capire come si usi buildbot.Come scalare buildbot in una società

Secondo il manuale buildbot, ogni buildmaster è responsabile per 1 codice base. Ciò significa che un'azienda che desidera utilizzare buildbot su, diciamo, 10 progetti, deve mantenere 10 diversi set di installazioni di buildbot (configurazioni master-slave, porte aperte, siti Web con output, ecc.). È davvero così che vanno le cose? Mi manca un'opzione che crea un mash-up che è facile da mantenere e monitorare?

Grazie!

+1

FWIW, attualmente è in corso il lavoro per migliorare il dimensionamento di buildbot, sponsorizzato dal progetto Mozilla. (Chi gestisce un _molto grande_ buildmaster). Vedere la mail list di buildbot per i dettagli. – Macke

risposta

4

Al mio posto di lavoro usiamo Buildbot per testare un singolo programma su diverse architetture e versioni di Python. Io uso un master di costruzione per supervisionare circa 16 slave. Ogni serie di slave attinge da un repository diverso e lo confronta con Python 2.X.

Dalla mia esperienza, sarebbe facile configurare un master di una singola build per eseguire un mash-up di progetti. Questa potrebbe non essere una buona idea perché la pagina waterfall (dove gli schiavi build riportano i risultati) può diventare molto congestionata con più di un paio di slave. Se sei a tuo agio a scorrere una pagina lunga cascata, non sarà un problema.

EDIT:

Il comando di aggiornamento in master.cfg:

test_python26_linux.addStep(ShellCommand, name = "update pygr", 
    command = ["/u/opierce/PygrBuildBot/update.sh","000-buildbot","ctb"], workdir=".") 

000-buildbot e CTB sono parametri aggiuntivi per specificare quale ramo e pronti contro termine a tirare da ottenere le informazioni. Lo script update.sh è qualcosa che ho scritto per evitare un problema git non correlato. Se si desidera eseguire diversi progetti, è possibile scrivere qualcosa come:

builder1.addStep(ShellCommand, name = "update project 1", 
    command = ["git","pull","git://github.com/your_id/project1.git"], workdir=".") 

(the rest of builder1 steps) 

builder2.addStep(ShellCommand, name = "update project 2", 
    command = ["git","pull","git://github.com/your_id/project2.git"], workdir=".") 

(the rest of builder2 steps) 

I due progetti non devono essere correlati. Buildbot crea una directory per ogni builder e esegue tutti i passaggi in quella directory.

+0

La configurazione master dice semplicemente allo slave di eseguire una serie di comandi del terminale. Per eseguire una versione diversa o un progetto diverso, basta dirgli di prelevare da un repository diverso. Poiché è possibile personalizzare i comandi per ogni slave, è possibile avere ciascuno slave che esegue una versione/progetto/qualsiasi cosa diversa. –

+0

No, è l'opposto di quello che sto dicendo. Estrarre da un repository ed eseguire build in tempo reale è l'idea alla base dell'integrazione continua. Usiamo git per il controllo della versione. –

+0

Ho finalmente capito cosa intendi con questo, e questa è in realtà una buona idea. Solo una nota degna di nota - abbiamo deciso di utilizzare le categorie, in modo che ora possiamo dividere la vista a cascata in base a tali categorie, quindi ogni sviluppatore vede solo i progetti che lo interessano. – abyx

3

FYI, BuildBot 0.8.x supporta diversi repository su un master, semplificando un po 'le cose.

+1

È possibile visualizzare un esempio in una [domanda correlata] (http://stackoverflow.com/questions/2795386/support-for- multiple-repository-con-buildbot/7148534 # 7148534) – hithwen

Problemi correlati