Domanda

Uno dei criteri della Joel prova è costruisce tutti i giorni. L'idea è che se la build è rotto, chi ha rotto è in giro per risolvere il problema in su. Se la compilazione non può essere risolto, tutti dovranno controllare una vecchia versione e lavorare su questo. Posso capire come questo può essere piuttosto male sul controllo di versione centralizzato dove è importante evitare la fusione e la ramificazione, per quanto possibile, ma questo solo suona come un minore fastidio per il controllo di versione distribuito. Sei d'accordo con questo? Ci sono altri motivi per cui costruisce tutti i giorni sono importanti?

È stato utile?

Soluzione

Credo che ciò che è importante da notare qui è che normale costruisce aiuto errori di cattura più presto . Non sono di essere tutti i giorni, ma abbastanza spesso. Idealmente, si può anche eseguire i test di unità.

L'obiettivo è quello di scoprire quando una build rompe prima della fase di collaudo finale, per trovare il più presto possibile.

Basta impostare fino a costruire il vostro ramo di sviluppo principale (es).

L'usiamo al lavoro (anche se costruiamo ogni ora), e spesso quando ci dimentichiamo di set-up che troviamo sui problemi poche ore prima di rilasciarlo.

Altri suggerimenti

bisogno di aggiungere un po 'per questo (e @GoodEnoughs):

, ma questo solo suona come un minore molestia per la versione distribuita controllo.

assolutamente no -. Quello che una build "server" non è dirvi che il vostro bagagliaio sarà costruire e superare le sue prove più o meno da pulire (minore è la quantità di config è necessario fare del proprio ambiente)

Sto contemplando un interruttore per DVCS ma anche averlo fatto in modo da trascinare la mia integrazione continua dalle mie fredde mani morte.

Per fare un semplice esempio - si sta sviluppando funzionalità "a" che ha funzione di sviluppo "b" distribuito o meno ad un certo punto è necessario cucire tutto insieme - se, quando si commettono, si dimentica di aggiungere un file del applicazione si baserà sulla vostra macchina, ma non sarà altrove. Così, quando si preme il build per il vostro "tronco" Continuous Integration attiverà e la costruzione fallirà e si sa e si spera prima qualcuno tira il codice non è così completa che sarete in grado di prendere passi.

Se si sta lavorando su un progetto con più sviluppatori che hai avuto modo di essere in grado di definire dove le versioni di rilascio provengono - tronco in effetti -. Questo è vero a prescindere di come il vostro funziona il controllo di versione

Se hai aggiunto una caratteristica - in particolare quello su cui gli altri hanno una dipendenza - per poter essere sicuri che quando si è spinto a "vivere" che si costruisce e passa i test da qualche parte che non siano l'ambiente dev è enorme . Più di questo, schiero dalla costruisce dal mio server di build - questo tipo di come si specifica la build "definitivo". In definitiva ho intenzione di avere all'utente distribuzione innescato costruisce. Il suo non va bene dire che si può lavorare intorno ad esso - non si può se ne avete bisogno (e sono strapazzate scatole dev rotonde in un ufficio per trovare e commit file mancanti)

.

E 'tutto un po' forte? Non lo so -. Ma il mio server di build è una di quelle cose che hanno ottenuto non ho alcun desiderio di restituire

Daily costruisce ritengo molto importante. Se si dispone di un team distribuito in diversi fusi orari, allora è meglio trovare il tempo, che è più o meno 'end-of-day' per la maggior parte della squadra. Inoltre se la costruisce ogni giorno hanno una componente di test automatizzato, allora è più desiderabile.

Nei giorni di sistemi di controllo del codice sorgente centrali, vorrei sostenere continuo costruisce in esecuzione ogni 5-10 minuti, quando nulla è cambiato nel codice sorgente. Da un errore di compilazione ha un potenziale di rallentare la maggior parte della squadra. Per le organizzazioni in esecuzione sistemi di controllo sorgente fornito, un continuo costruzione potrebbe non essere necessario in quanto molto in quanto gli sviluppatori di toccare il 'incontaminata' codice-base direttamente meno spesso.

Idealmente, a meno che non si sta costruendo qualcosa di enorme che prende più di mezzo giorno per costruire, si dovrebbe costruire più di una volta al giorno. Una volta impostato, un server di integrazione continua, come ad esempio Hudson o TeamCity , le generazioni avverrà automaticamente, tipicamente ogni ora o su ogni commit, e ti saranno informati se ci sono dei problemi.

E 'un buon modo per catturare gli errori presto, soprattutto se si sta anche eseguendo test automatizzati come parte della costruzione. E 'particolarmente utile per trovare errori di configurazione in cui la build lavora sulla macchina uno sviluppatore ma non funziona altrove perché qualcosa è stato omesso dal repository o l'ambiente.

I server di integrazione continui più avanzati consentono anche di monitorare metriche nel tempo (ad esempio, il codice percentuale di copertura, tempo di costruzione, linee di codice, ecc.)

Costruisce

Daily sono a posto. È definietly bisogno di loro se non hai niente altro che ad essere sincero, credo che la prova di Joel è un po 'datata in questi giorni.

A mio parere si dovrebbe essere la costruzione in modo continuo durante tutto il giorno, in esecuzione l'unità, di sistema e casi di test di livello funzionale e, idealmente, il confezionamento e la distribuzione a una fase come l'ambiente, allo stesso tempo, mentre verificando che ogni DB e voi meccanismi ambiente delle versioni avere in atto funzionino come previsto.

Se costruire o distribuzione volte sono eccessivi quindi prendere in considerazione optomizing via alcuni di questi problemi con i dischi RAM fisica o software, più veloci connessioni internet, parallellizing costruisce, ecc Il tempo si risparmia identificando rapidamente le pause di build sta per amoratize l'hardware costare abbastanza rapidamente.

Daily costruisce non sono importanti. costruisce tutti i giorni che sempre hanno successo sono (o quelli in cui si è rotto solo per un'ora). Avendo CI quando la build è rotto il 70% del tempo non è molto utile, perché se la cosa è per lo più rotto non aiuta a identificare un errore.

penso che dovrebbe essere build giornaliera, testare e distribuire al server di gestione temporanea.

L'idea alla base di 'costruire quotidiano' è quello di avere sempre qualcosa di pronto, che i tester e responsabili di progetto può essere eseguito in modo che ognuno di noi ha un'idea di ciò che il reale stato del progetto è.

In passato con applicazioni desktop dopo il 'build giornaliera' un tester o project manager può eseguire immediatamente l'applicazione in modo che nessun passo implementare doveva essere menzionato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top