Qual è il loro scopo?
Prendere il carico delle macchine sviluppatore, fornire un ambiente stabile e riproducibile per le build.
Perché gli sviluppatori non costruiscono il progetto sulle loro macchine locali o no?
Perché con un software complesso, molte cose possono andare storte quando si "compila". problemi che ho effettivamente riscontrato:
- controlli di dipendenza incompleti di tipi diversi, con conseguente binari non aggiornati.
- Pubblica comandi che non funzionano in modo silenzioso, il messaggio di errore nel registro ignorato.
- Build comprendente sorgenti locali non ancora impegnate per il controllo del codice sorgente (fortunatamente, nessuna finestra di messaggio "maledettamente clienti" ancora ..).
- Quando si tenta di evitare il problema sopra costruendo da un'altra cartella, alcuni file vengono prelevati dalla cartella sbagliata.
cartella
- di destinazione in cui vengono aggregati i binari contiene ulteriori file di sviluppo stantii che non shoulkd essere inclusi nel rilascio
Abbiamo un aumento sorprendente stabilità dal momento che tutte le emissioni pubbliche iniziano con un get dal controllo di origine su una cartella vuota . Prima c'erano molti "problemi divertenti" che "sono andati via quando Joe mi ha dato una nuova DLL".
Alcuni progetti sono così grandi che sono necessarie macchine più potenti per costruirlo in un ragionevole lasso di tempo?
Cos'è "ragionevole"? Se eseguo una compilazione batch sul mio computer locale, ci sono molte cose che non posso fare. Piuttosto che pagare gli sviluppatori per le build da completare, paga IT per acquistare già una vera macchina da costruzione.
È che non ho appena lavorato a progetti abbastanza grandi?
La dimensione è sicuramente un fattore, ma non l'unico.
Le cose diventano particolarmente complicate quando gli sviluppatori stanno costruendo contro le librerie all'avanguardia, senza rendersene conto e quindi ricevendo errori "NoClassDefFound" dappertutto durante i test e tutti gli altri si chiedono che cosa diavolo è andato storto. (Questo è stato problematico nel mio lavoro basato su Java fino a quando ho creato Hudson e abbiamo trasferito le build del QA a quello) – MattC
In realtà questo è solo un motivo per costruire da un checkout pulito, non per costruire da un build-agent dedicato su una build dedicata -server. L'esecuzione di uno script di compilazione automatico in un checkout pulito del repository su una macchina degli sviluppatori locali offre già la maggior parte dei vantaggi di un build-server dedicato. – Kaiserludi
Uno dei principali vantaggi, IMHO, è che ti obbliga a utilizzare un buildsystem che funzionerà al 100% automatizzato e ti incoraggia molto ad avere zero pulsanti da premere per iniziare. Non si tratta solo di avere una singola fonte per le versioni e le build di test, ma anche per assicurarsi che le persone non rovinino il tuo sistema di compilazione. – Clearer