2009-10-02 6 views
8

In questo momento stiamo costruendo un numero di app C++ per la piattaforma Win32. Presto eseguiremo il porting su Linux e poi forse su altri (32 e 64 bit per entrambi).Come usare hudson quando si costruisce per più piattaforme

Qual è la pratica standard, si utilizzano più server hudson ciascuno sulla propria piattaforma per eseguire una build oppure il servizio hudson crea VM e crea build?

Non mi è chiaro il modo migliore per farlo.

Idealmente, voglio solo una casella con un gruppo di macchine virtuali in esecuzione hudson, e quindi avvia le build in base alle esigenze.

Esiste una risorsa a cui qualcuno può indirizzarmi per questo?

risposta

5

Utilizziamo Hudson per gestire build C/C++ (GNU C, GNU C++, Watcom C) per più SO. Per noi, il software è progettato per Linux, Linux x64, QNX 4 e QNX6. Il modo in cui l'abbiamo istituito è:

  • 1 x VM per il server Hudson, con sistema operativo Windows
  • 4 x VM, una per ogni tipo di slave, quindi ho 4 Hudson schiavi - 1 ciascuno per qnx4, QNX6 e Linux 32 e Linux 64. Tutti loro sono in esecuzione sullo stesso server, proprio come diverse VM, e non abbiamo riscontrato problemi. Costruiamo circa 100 progetti, suddivisi quasi equamente tra i 4 tipi di sistema.

Non è necessario alcun hardware aggiuntivo. C'è un plugin Hudson che funziona con VM VMware, per avviarli e chiuderli come richiesto.

Spero che questo aiuti.

+0

Grazie - sembra un buon set up anche per noi. – Tim

+0

Ho configurato il nostro sistema da zero, quindi so che ci vuole tempo, ma non è difficile. Ho appena realizzato che la tua domanda è stata pubblicata l'anno scorso. Hai avuto qualcosa in esecuzione? – Sagar

+1

hai qualche consiglio per la configurazione del retro. il sistema attuale è linux e altre build devono essere eseguite sotto Windows. – myusuf3

2

Non ho mai usato hudson per C++ ma per quello che si prevede di fare, potrebbe essere opportuno guardare lo VMWare plugin e vedere se farà ciò che si desidera. Suggerirei di avere un solo master Hudson, se possibile. Quello che più probabilmente vorresti fare è impostare un'immagine macchina VMWare con un processo Hudson Slave per ogni ambiente di destinazione, quindi generare una build in quello slave.

+0

Questo è l'obiettivo ideale, ma non sono sicuro di quanto sia pratico. Devo solo giocarci, credo. – Tim

2

Ho giocato con Hudson in uno scenario multipiattaforma un po 'più di un anno fa. Ho avuto un server hudson (che è stato ridicolmente facile da configurare) su alcune macchine e slave di compilazione separati per ciascuna delle piattaforme. Ricordo che per un po 'uno dei client build era in un VirtualBox sulla macchina che ospitava il server hudson. (Penso di aver avuto il server su una VM per un po 'di tempo.) Non riesco a ricordare che ci sia qualche problema di principio con questa configurazione.

Tuttavia, se si desidera creare diverse macchine di generazione virtuali basate sulla stessa macchina fisica, penso che sia necessario disporre di una macchina molto potente. La compilazione in C++ richiede un bel po 'di risorse e, IIRC, quando hudson avvia una build, la avvia su tutte le piattaforme contemporaneamente.

+0

Sì, mi rendo conto che potremmo dover disporre di più macchine e, in tal caso, potrebbe essere o meno semplice avere hudson in esecuzione su ciascuna piattaforma, anche se è sciocco. Idealmente voglio che l'unico server hudson attivi ogni slave. Credo di dover solo mordere il proiettile e acquistare hardware aggiuntivo. – Tim

+1

Tim, hai solo bisogno di un server _one_ hudson, non uno per ogni piattaforma. Ma avrai bisogno di uno schiavo di build per piattaforma. Puoi testarlo con le macchine virtuali fino a quando pensi che funzioni, ma alla fine probabilmente non ti divertirai con l'IC se crei tre piattaforme in VM sulla stessa macchina fisica. – sbi

+2

È abbastanza importante capire che hai sempre * bisogno di 1 server hudson. Puoi fare tutto il resto con gli schiavi installati su architetture appropriate. (* per interpretazioni ragionevoli di sempre) –

1

Si noti che non è necessario alcun rapporto tra il server su cui è in esecuzione Hudson e le macchine slave che stanno creando le applicazioni software. A causa della magia di Java, puoi connettere le macchine slave disparate al master usando JNLP. (un esempio) Quindi, sia che si tratti di macchine fisiche o virtuali, è possibile avere una versione Windows, un'altra Linux; uno a 32 bit, un altro a 64 bit; ecc. - qualsiasi cosa richieda la tua app. Finché hanno installato JRE, possono connettersi al master Hudson e segnalare lo stato delle build.