Oldukça büyük bir çevik ekipte yazılım geliştiriciyim (tek bir kod deposunda aktif olarak değişiklik yapan sekiz geliştiricimiz var). İki haftada bir, yazılımımızın yeni bir sürümünü üretime zorluyoruz. Mevcut iş akışımız:
- Yeni bir göreve başlarken, geliştiriciler ana geliştirme dalından bir "özellik dalı" oluştururlar ( git kullanıyoruz ) ve bu yeni daldan çalışırlar
- Bir geliştirici görevlerini tamamladıktan sonra, özellik dallarını geliştirme dalına geri birleştirir
- Geliştirici geliştirme dalını KG dalında birleştirir.
- KG şubesinden bir yapı tetiklenir. Bu yapının çıktısı, test uzmanlarının testlerine başlamasına izin vermek için KG ortamımıza yerleştirilir.
Test uzmanlarımız, KG şubesinde birleştirilen bu yeni özelliklerle ilgili sorunlar bulmak oldukça yaygındır. Bu, herhangi bir zamanda, KG ortamının muhtemelen bazıları test edilmiş ve hatasız ve bazıları kırık olmak üzere birkaç yeni özellik içerdiği anlamına gelir. Bu, bırakmayı zorlaştırır, çünkü KG yapısının üretime hazır bir durumda olması nadirdir.
Bunu hafifletmek için, bir "KG donması" başlatmaya çalışıyoruz, bu da geliştiricilerin, geliştirme dalımızı yayın gününden birkaç gün önce KG dalıyla birleştirmediği anlamına geliyor. KG ortamına yönelik hata düzeltmeleri doğrudan KG şubesinde yapılır ve geliştirme şubesiyle birleştirilir. Teorik olarak, bu, QA'daki sorunları düzeltmemize izin verirken yeni, kırık özellikleri KG'den uzak tutar.
Bu "KG donma" kavramı kısmen başarılı olsa da, koordine etmek zordur ve insanlar genellikle KG ile birleşmelerine izin verilip verilmediğine dair kafaları karışır. Aynı zamanda bir "KG donma" son tarihini belirlemek zordu - herkes donma ve bırakma arasında bir nefes odası fikrinden hoşlanır, ancak pratikte, bir sonraki sürümde son teslim tarihine uymaktan ziyade özelliklerine sahip olmayı tercih ederler.
İki haftada bir yayınlanan sürümlerimiz için temiz bir yapıya sahip olmamızı sağlamanın daha iyi bir yolu var mı?