Testleri yapmadan herhangi bir şeyi serbest bırakmanın imkansız olmasını sağlayın.
- Herhangi bir test başarısız olursa derlemede başarısız olun.
- Herhangi bir test göz ardı edilirse derleme başarısız.
- Test kapsamı belirli bir seviyenin altına inerse derleme başarısız (insanlar sadece üzerinde çalışmak için testleri silemezler).
- Sürüm oluşturma işlemlerinizi yapmak için CI sunucusunu kullanın ve yalnızca sunucunun oluşturma damlasındaki yapıların UAT / evreleme / üretim / herhangi bir şekilde tanıtılmasına izin verin.
Meselenin gerçek şu ki, yapınız bir seferde yaklaşık 15 dakikadan daha fazla bir süre boyunca kırılırsa (ve bu başarısız testler dahil), o zaman sürekli entegrasyon yapmıyorsunuzdur .
"Nükleer seçenek", kaynak kontrol sunucunuzun reddetmesini, yapıyı bozan kullanıcı dışındaki herhangi bir kullanıcıdan taahhüt / checkin yapmaktır. Açıkçası bir yöneticinin eğer söylenen kişi tatile giderse geçici olarak bunu geçersiz kılabilir olması gerekir - ama eğer herkes testlerini düzeltinceye kadar tüm takımın berbat olduğunu bilirse, çabucak çözeceklerdir.
İyi bir politika (otomatikleştirildiğinde daha da iyi olan), yapıyı 15 dakika geçtikten sonra kaynağı bilinen en son kararlı işleme geri döndürmektir. Başka bir deyişle, düzeltemezseniz veya yapı veya testin bozulmasına neyin neden olduğunu bilmiyorsanız, o zaman geri dönün ve çözümlenene kadar yerel olarak çalışın ; sorun umursamıyorlar.
PS Zaten başarısız bir çok testiniz varsa, CI'da bir "takip eşiği" kullanabilirsiniz. Derleme, yalnızca son zamandan daha fazla test hatası olması durumunda başarısız olacak şekilde ayarlayın. Bu, kapsam kuralıyla birlikte, geliştiricilerin çalışmaya devam edebilmek istiyorlarsa sonunda test durumunu iyileştirmeye zorlayacaktır.
PPS Bunun bir kısmına sarsıcı gelebileceğinin farkındayım, ama hepsi senin kültüründe. Eğer insanlar sadece bir noktaya gelirse yok başarısız kırık yapı veya testleri bırakın (Bazen onları hatırlatmak zorunda rağmen ekibim neredeyse hiç yok), o zaman kural sıkı kümesiyle devam etmek gerekmez. Her ne kadar IMO her zaman kırık bir ünite testinde başarısız olmalısın. Entegrasyon / tarayıcı testleri bazen başarısız olabilir.