Attualmente lavoro con un giovane team di sviluppatori che utilizza ASP.NET, TeamCity e Octopus Deploy. Uno dei nostri sviluppatori ritiene che il nostro sistema sia difettoso e introduce l'impossibilità di testare gli hotfix di produzione. Qual è la migliore soluzione a questo problema?
Abbiamo tre ambienti: sviluppo, allestimento e produzione. Fondamentalmente, il nostro flusso di lavoro va solo avanti.
Git push to master - > TeamCity Build - > Octopus Deploy (Dev) - > Promuovi in Staging - > Promuovi in Prod
La sua soluzione è di avere tre rami: master (sviluppo), stadiazione (staging) e prod (produzione). Facciamo tutto lo sviluppo attivo nel nostro ramo master, eseguiamo qualsiasi controllo di qualità in fase di staging e ci uniamo da staging a prod quando abbiamo bisogno di eseguire un rilascio. Quando si verifica un errore nella produzione, eseguiamo la modifica nella gestione temporanea e quindi riutilizziamo la produzione, lasciando il nostro ramo di sviluppo da solo. Alla fine uniamo tutte le modifiche di sviluppo nel ramo di produzione una volta che siamo pronti a rilasciare nuove funzionalità.
Non penso che sia necessariamente giusto comunque. La mia soluzione è di avere l'ultima versione di produzione nel ramo principale. Tutto lo sviluppo avviene nei rami delle funzionalità. Quando abbiamo testato un ramo di funzionalità, ci uniamo di nuovo alla produzione. Semplice.
Quindi qual è la migliore soluzione a questo problema? Inoltre, alcune domande di follow-up:
- Dovremmo migliorare la nostra procedura di QA? Dovremmo fare QA sui rami delle funzionalità o sulle versioni complete?
- Come dovremmo impostare la nostra integrazione continua? Dovremmo avere server distribuiti per ogni versione?
Mi piacerebbe sentire alcuni esempi o suggerimenti che potresti avere riguardo questo scenario. Grazie!