Sono uno sviluppatore di software su un team agile abbastanza grande (abbiamo otto sviluppatori che apportano attivamente modifiche a un singolo repository di codice). Ogni due settimane, portiamo in produzione una nuova versione del nostro software. Ecco il nostro flusso di lavoro corrente:
- Quando si avvia una nuova attività, gli sviluppatori creano un "ramo di funzione" al di fuori del ramo di sviluppo principale (usiamo git ) e funzionano fuori da questo nuovo ramo
- Una volta che uno sviluppatore ha terminato di lavorare sulla sua attività, uniscono il loro ramo di funzionalità nuovamente al ramo di sviluppo
- Lo sviluppatore unisce il ramo di sviluppo al ramo QA.
- Una build viene attivata dal ramo QA. L'output di questa build viene implementato nel nostro ambiente QA per consentire ai tester di iniziare il test.
È abbastanza comune per i nostri tester trovare problemi con queste nuove funzionalità che sono state unite nel ramo QA. Ciò significa che in qualsiasi momento l'ambiente di controllo qualità probabilmente contiene diverse nuove funzionalità, alcune testate e prive di bug e alcune non funzionanti. Ciò rende difficile il rilascio perché è raro che la build del QA sia in uno stato pronto per la produzione.
Per mitigarlo, abbiamo cercato di avviare un "blocco del QA" che significa che gli sviluppatori non uniscono il nostro ramo di sviluppo alla branca del controllo qualità un paio di giorni prima del rilascio. Le correzioni dei bug all'ambiente QA vengono eseguite direttamente sul ramo QA e unite al ramo di sviluppo. In teoria, questo mantiene nuove funzionalità interrotte dal QA, pur continuando a consentirci di risolvere i problemi già presenti nel QA.
Mentre questo concetto di "congelamento del QA" ha avuto un parziale successo, è difficile coordinare e le persone sono spesso confuse riguardo al fatto che siano autorizzati a unirsi al QA. È stato anche difficile stabilire una scadenza per il "blocco del QA": a tutti piace l'idea di un po 'di respiro tra il freeze e il rilascio, ma in pratica preferirebbero la loro funzione nella prossima versione rispetto alla scadenza.
C'è un modo migliore per assicurarci di avere una build pulita per le nostre versioni ogni due settimane?