Sorunuzda mükemmel bir şekilde yansıtılan Sürekli Entegrasyon (CI) ile ilgili temel bir sorun var: CI uygulamalarının kurulumu ve savunması zordur çünkü CI sunucu yazılımı kurulum için önemsiz değildir ve projelerinizi bir CI üzerinden çalıştırmak ve çalıştırmak da önemsizdir sunucusu. Bununla, aslında CI'yi kucaklamanın kazancının nerede olduğunu görmek zorlaşıyor.
Her şeyden önce, CI içgörü ve kalite ile ilgilidir. İyi CI sizi projenize yaklaştırır, kalite metrikleri, dokümantasyon, kodlama standartlarına uyumluluk vb. Hakkında uygun geri bildirim sağlar. Tüm bunları kolayca görselleştirmek ve bir bakışta tanımanıza ve kolayca bir bakışta olmanıza olanak tanıyan araçlar sağlamalıdır. bir dizi değişikliği tüm bu proje metriklerinin belirli bir anlık görüntüsüyle ilişkilendirin.
Sadece ünite testleri yapmakla ilgili değil . Bir şey değil! Bu da beni kaliteye getiriyor. CI hataları kucaklar, onlardan kaçınmaz veya atmaz. Yaptığı şey, size daha sonra değil, erken hata yapmak için bir araç sağlamaktır. Dolayısıyla, daha önce test edilmiş bir kodu bir CI sunucusuna gerçekten işlemezsiniz. Her ne kadar temiz ve bozuk olmayan bir kod işlemeye çalışsanız da, aslında CI sunucusunu otomatik olarak bir entegrasyon oluşturucuyu kodunuz aracılığıyla otomatik olarak çalıştırmak ve her şeyin doğru olup olmadığını değerlendirmesini sağlamak için kullanırsınız. Varsa, temiz! Değilse, sorun değil - iyi CI uygulamaları, bir sonraki önceliğinizin kırılan her şeyi düzeltmek olması gerektiğini belirtir. Hangi, iyi bir CI sunucusunda, sizin için kolayca işaret edilmelidir.
Bir takımın büyüklüğü arttıkça, herkesin kodunun entegrasyonu doğal olarak zorlaşır. Tüm entegre parçaları test etmek ve bu yükü ekibin üyelerinden almak merkezi bir CI sunucusunun görevi olmalıdır. Bu nedenle, herkesin erken (ve mümkün olduğunca temiz) işlemesini ve ardından izleme durumunu oluşturur (genellikle bildirimler dahil edilir). Ve yine, bazı geliştiricilerin taahhüdü nedeniyle bir şey kırılırsa, hemen bunu düzeltmek ve bu otomatik yapıları hemen Tamam durumuna geri döndürmek onun sorumluluğu haline gelir.
Görüyorsunuz, bence her proje Sürekli Entegre olmaktan fayda sağlıyor. Mesele şu ana kadar ve bildiğim her bir CI sunucusundan akıl almaz karmaşıklık nedeniyle, insanlar daha küçük / basit projelerde CI uygulamalarını gerçekten savuşturdular. Çünkü, insanlar, çirkin, aşırı karmaşık, yetersiz teslim edilen, şişirilmiş bir yazılımı yapılandırarak gün geçirmekten daha iyi şeylere sahipler.
Aynı problemi yaşadım ve bu da yaklaşık bir yıl önce boş zamanlarımda Cintient'i geliştirmemi sağladı. Benim önceliğim, kurulumu, yapılandırmayı ve kullanmayı kolaylaştırmak ve herkesin hemen hemen başarısız olduğu ya da yetersiz çalışanların bu kalite metriklerini sunmasını sağlamaktı. Bu uzun cevaptan sonra, projenin GitHub bağlantısını işaret eden utanmaz fişim geliyor (ücretsiz ve açık kaynak, natch). Görünüşe göre bazı güzel ekran görüntüleri de var. :-) https://github.com/matamouros/cintient
Umarım sana yardımcı oldum.
(NOT: Bryan Oakley'nin yorumundan sonra, daha iyi bir cevap oluşturmak için daha fazla zaman harcamam gerektiği gerçeğinde düzenlendi. Ben de haklı olduğunu düşünüyorum.)