2010-07-20 7 views
16

Quando ho iniziato a creare un server di integrazione continua, ho trovato l'istruzione "È male rompere la build [del codice]". Dopo aver terminato il progetto, sono giunto alla conclusione cheBreaking the Build, Perché è una brutta cosa?

  1. "Rottura della struttura". era una frase accattivante che veniva lanciata molto spesso a causa dell'allitterazione, oppure
  2. Non stavo capendo un elemento chiave dell'integrazione continua.

Quindi la mia domanda è nello spirito di # 2: perché è una cosa brutta rompere la costruzione?

+0

tipicamente rompere qualsiasi cosa è male, oltre che 'irrompere nel business', ecc. – kenny

+8

Se si "rompe la build", non si ha più un sistema funzionante, che è il tipo di punto di integrazione continua. Come può * non * essere cattivo? – MJB

risposta

19

Perché se altre persone verificano le modifiche non riuscite, non saranno in grado di funzionare o se lo faranno lo faranno in modo meno efficiente.

Significa anche che non si stanno testando correttamente le modifiche prima del commit, che è la chiave in CI.

+0

Quindi, per rottura si intende che esiste un codice che non viene compilato in fase di commit nel repository di origine? – Achilles

+1

Giusto. "Breaking the build" si riferisce, di solito, al codice di commit che non hai testato e che quindi non compila (o comunque fallisce in modo spettacolare) e impedisce ai tuoi colleghi di ... sai, lavorando :) – rfunduk

+0

Questa è l'applicazione più semplice. Nell'applicazione più estrema, qualsiasi modifica introdurrebbe un bug. Direi che i due usi più comuni sono 1 - induce a non compilare, o 2 - causa un bug significativo che inibisce il lavoro di altre persone. Ovviamente non puoi sempre commettere errori privi di bug (oh ragazzo se puoi!) Ma devi assicurarti che le tue modifiche non impediscano in qualche modo la visualizzazione dei menu, causino la comparsa di molti messaggi di errore e certamente non causa errori di compilazione. (La maggior parte degli errori di compilazione nei check-in si verificano quando si dimentica uno dei file per il check-in, btw.) – corsiKa

0

Perché significa che qualcuno ha fatto qualcosa di male (o almeno, alcune modifiche si sono scontrate) e non è più possibile costruire e distribuire il proprio sistema.

4

Si rompe la costruzione come mi è successo ieri. Quando i tuoi compagni di squadra cercano di usare il codice sorgente. Non costruirà. Pertanto essi lotteranno per testare il lavoro che stanno facendo. Diventa peggio più grande è la tua squadra.

1

Una volta che le costruzioni iniziano a rompersi, le persone diventano riluttanti a ricevere gli ultimi cambiamenti e si inizia la spirale mortale verso l'integrazione dei cambiamenti del Big Bang.

0

Interrompere la compilazione significa che è stato eseguito il commit del codice su un repository condiviso che (a) non viene compilato o (b) non funziona (fallisce i test unitari). Chiunque stia sviluppando da quel repository condiviso avrà a che fare con il codice guasto che hai commesso fino a quando non verrà risolto. Ciò causerà una perdita di produttività per l'intera squadra.

11

Da Martin Fowler http://martinfowler.com/articles/continuousIntegration.html

Il punto centrale di lavorare con C'è che si sta sempre in via di sviluppo su una base stabile noto . Non è una cosa brutta per la build mainline da rompere, , anche se sta succedendo tutto il tempo suggerisce che le persone non sono in fase di aggiornamento e edificio locale prima di un commit. Quando si interrompe la costruzione della linea principale, , è importante che venga risolto il problema con .

+3

+1 per Martin Fowler – corsiKa

1

Rompere l'accumulo ha implicazioni disastrose per la pianificazione del progetto (e la pressione sanguigna di compagni di squadra) => Altri sviluppatori che quindi ottenere la versione più recente non può più costruire lì proprie modifiche, ritardando loro => continua l'integrazione si interromperà, il che significa che i test formali possono essere ritardati

Molti strumenti di controllo delle versioni (es. TFS) possono impedire agli sviluppatori di verificare il codice che non compila o supera i test di analisi di unità o codice.

1

Non credo che rompere la build sia necessariamente una cosa negativa, a patto che ci sia un ramo o tag ben funzionante nel repository.Detto questo, crea il tuo ramo personale nel repository se sai che il tuo codice sta andando alla rottura della build oggi, ma lo aggiusterai la prossima settimana. Successivamente, è possibile unire nuovamente il tronco.

+2

Hai quasi ragione, tranne che se stai creando un tuo ramo, non è un'integrazione continua, vero? – corsiKa

19

Fare molta attenzione nell'etichettare "Breaking the Build" come una cosa negativa. È qualcosa che richiede attenzione immediata, ma è anche una parte molto normale e attesa del ciclo di sviluppo. Questo è il motivo per cui l'integrazione continua è così utile: ti dice immediatamente quando la build è interrotta e quale modifica lo ha causato. Ti aiuta a tornare in pista velocemente.

Se la tua cultura penalizza "Breaking the Build", rischi di coltivare un ambiente di lavoro tossico. Ancora una volta, consideralo come qualcosa che richiede attenzione immediata, ma non etichettarlo come "cattivo".

+0

Felice che tu l'abbia detto. Il mio commento implicava certamente che si trattava di una "cosa cattiva in generale", in contrapposizione a una "cosa cattiva che dovresti cercare di risolvere quando succede". – MJB

5

Perché se altre persone checkout i cambiamenti, che non sarete in grado di lavorare ... alt text Questa immagine è protetto To Geek & Poke sotto un Creative Commons License

2

Sicuramente il punto di integrazione continua è quello di identificare i problemi in anticipo. Sono necessari controlli giornalieri o più frequenti per ridurre i conflitti a una dimensione gestibile.

Si dovrebbe ottenere una copia aggiornata del repository e creare localmente. Questo ti dirà se il tuo check-in proposto interromperà la build. Risolvi eventuali problemi e quindi il check-in.

In questo modo i problemi di integrazione sono mantenuti locali e facili da risolvere.

Problemi correlati