Sono uno sviluppatore software di un team agile abbastanza grande (abbiamo otto sviluppatori che stanno attivamente apportando 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 attuale:
- Quando si avvia una nuova attività, gli sviluppatori creano un "ramo di funzionalità" al di fuori del ramo di sviluppo principale (usiamo git ) e lavorano a partire da questo nuovo ramo
- Una volta che uno sviluppatore ha terminato di lavorare sulla propria attività, unisce nuovamente il proprio ramo di funzionalità al ramo di sviluppo
- Lo sviluppatore unisce il ramo di sviluppo nel ramo QA.
- Una build viene attivata al di fuori del ramo QA. L'output di questa build viene distribuito nel nostro ambiente QA per consentire ai tester di iniziare i 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 QA probabilmente contiene diverse nuove funzionalità: alcune testate e prive di bug e altre non funzionanti. Questo rende difficile il rilascio perché è raro che la build QA sia pronta per la produzione.
Per mitigare questo, abbiamo cercato di avviare un "blocco del QA", il che significa che gli sviluppatori non uniscono il nostro ramo di sviluppo nel ramo del QA un paio di giorni prima del rilascio. Le correzioni di bug nell'ambiente QA vengono eseguite direttamente sul ramo QA e unite al ramo di sviluppo. Teoricamente, questo mantiene le nuove funzionalità non funzionanti fuori dal QA, consentendoci comunque di risolvere problemi già presenti nel QA.
Sebbene questo concetto di "blocco del QA" abbia avuto in parte successo, è difficile coordinarlo e le persone sono spesso confuse sul fatto che possano unirsi al QA. È stato anche difficile fissare una scadenza per il "blocco del QA": a tutti piace l'idea di un po 'di respiro tra il congelamento e il rilascio, ma in pratica, preferirebbero avere la loro caratteristica nella prossima versione piuttosto che rispettare la scadenza.
Esiste un modo migliore per garantire una build pulita per le nostre versioni ogni due settimane?