Hudson + Symfony: insidie nascoste.

Tutto perfetto, tutto ok, commit solo con test verdi, hudson non rileva problemi da almeno 20 build. Si fa il checkout svn e giu con il build–all. Ma … si inchioda tutto, non riesce a buildare perché dice che gli manca una classe (base). Che cosa sarà mai successo???

Questo è lo scenario che si è creato qualche giorno fa sul progetto sul quale stiamo lavorando. Fortunatamente stiamo ancora in fase di test, quindi nessun problema, ma è stato proprio un fulmine a cel sereno.

Attualmente facciamo commit, solo se tutti i test sono verdi ed abbiamo a disposizione Hudson che svolge il suo lavoro egregiamente … ma perche allora c’e questo errore?

A quanto pare nei precedenti refractoring abbiamo rimosso dal file schema.yml un modello che non era piu utilizzato. Ma, non siamo stati così attenti, da togliere i file che vengono generati automaticamente con la build.

class Article extend BaseArticle

Alcuni file dentro a lib (filter per esempio) estendono ancora dalla classe BaseArticle. Il problema è che finche non si fa un checkout questo problema non si verifica. Questo perchè, sulle macchine che avevano già buildato il modello e che fanno il semlice up, i file non sono stati cancellati, quindi partecipano alla build evitando di mandare in crash la compilazione. Ma nel checkout non esistono … quindi crash.

Hudson allo stesso modo, nei notri task fa l’up, quindi anche lui non se ne accorge.

La nostra colpa è di non aver utilizzato il comando di symfony doctrine:clear che sarebbe andato in errore facendoci scattare qualche campanello d’allarme. Ma il problema, per come la vedo io, è che abbiamo degli strumenti che ci aiutano a tenere sotto controllo questi aspetti e ci aspettiamo che lo facciano. Quindi dalla nostra abbiamo una dimenticanza, ma soprattutto una configurazione errata di Hudson.

Pensandoci un po su, la soluzione non è stata molto complicata:

  1. Prima di tutto abbiamo creato un nuovo task su hudson. Questa volta invece di fare l’up si fa il checkout.
  2. Abbiamo introdotto un nuovo comando shell-command (nel task con il checkout) : symfony doctrine:clear

In questo modo, dovremmo essere coperti dai futuri problemi di questo tipo.

Ora, sono relativamente nuovo a questo tipo di tool, mi piacerebbe avere un feedback da qualcuno che ne sa di piu.
Vi è mai capitato un problema del genere? Come avete risolto? La nostra soluzione è corretta?

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...