Büyük şirketlerde sürekli entegrasyon nasıl organize edilir?


11

Şirketimde, her özellik / hata düzeltme dalının geliştirmede nasıl birleştirildiğini kontrol etmek için herhangi bir ara yapı yapmamak yaygındır. Her zaman çok sayıda test başarısızlığını ve hata oluşturmayı sağlayan günlük derleme vardır. Bana 1000'den fazla geliştirici için her birleştirme için yapı oluşturmanın mantıksız olduğu söylendi.

Bu yüzden, CI'nin bu kadar çok geliştiriciye (Microsoft, Facebook) sahip şirketlerde nasıl organize edildiğini araştırdım ve hiçbir şey bulamadı. Belki, içerdekiler bana söyleyebilir mi?



@gnat Yeterli misiniz? Nasıl bağlantılı? İçeriden tecrübe istedim ve örneğin şirketleri işaret ettim. Müşteri desteği istemedim.
Megamozg

11
@gnat Bunun nasıl bir şey olduğunu anlamıyorum. Megamozg: CI proje modülü tarafından organize edilir, 1000 geliştiricili modül yoktur. Bu yüzden çok fazla insan varsa, projenizi / modülünüzü daha küçük parçalara bölün.
Walfrat

@Walfrat tamamen ilişkilidir. Bu site, büyük şirketlerin şirketlerinin çeşitli şeyleri nasıl yaptıkları konusunda anket / anket yapmak için değildir. Eğer böyle şeyler merak edilirse, bu şirketlerin destek kanallarını kullanmalıdırlar
gnat

@gnat Sağladığınız bağlantının nasıl uygulandığını gerçekten göremiyorum, özellikle Walfrat'a yanıt olarak verdiğiniz yorumla. Bu yoruma dayanarak, bu IMHO uygun bağlantı (anket türü soruları ile ilgili bölüm) softwareengineering.meta.stackexchange.com/a/6490
Newtopian

Yanıtlar:


12

Temel olarak bir ölçeklendirme problemidir. Çalışmanızı ürününüzün farklı projeleri ve / veya farklı işlevleri olabilecek modüllere ayırıyorsunuz.

Bu modüllerin setlerini kapsayan ekipleriniz olacaktır. Bu ekiplerin her birinin kapsamları için ayarlanmış CI döngüleri olacak ve yalnızca ilgili döngüleri geçtikten sonra kod, ana CI döngüsünün çalıştırılacağı ana depolara gönderilecekti.

Ana CI döngüsü büyük olasılıkla bu yönlerden ekip seviyesi CI döngülerinden farklı olacaktır:

  • Takım düzeyinde CI döngüleri, tüm şirketin kodunu, sadece sorumlu oldukları modülleri ve bağımlı modülleri oluşturmak zorunda değildir. Tamamen bağımsız ve farklı takımlarda iki modül varsa, bunlar diğer takımın CI döngüsünün bir parçası olmaz.
  • Takım seviyesi CI döngüleri, ana CI çevriminden çok daha ayrıntılı otomatik testlere sahip olabilir. Ana CI döngüsü, ana çözümün büyüklüğüne bağlı olarak günlük veya hatta haftalık olarak gerçekleştirilecek olan akıl sağlığı kontrol testlerine ve regresyon testlerine sahip olacaktır, çünkü bu testlerin uygulanması 24 saatten fazla sürebilir.

Bu yaklaşımla yapmanız gereken, yerel CI döngüsü geçtikten sonra yerel depolardan merkezi repoya otomatik itme sağlamaktır, geliştiricileriniz kodu merkezi depolara itmek için çok fazla zaman harcarlar.


7

@Vladimir_Stokic'in söylediklerine ek olarak, bazı takımlarda (benimki yaklaşık 150 geliştirici var), 24 saatte bir daha sık inşa ediyoruz. Bir işlem gerçekleştiğinde 5 dakikalık bir zamanlayıcı başlatırız. 5 dakika dolduktan sonra, 5 dakikalık aralıkta gerçekleşen tüm taahhütler birleştirilir ve oluşturulur. Yapı genellikle artımlı bir yapıdır. Meydana gelen her derleme için birim testleri çalıştıran ayrı bir derleyicimiz var. Derleme bittikten sonra, derleme sırasında daha fazla işlem varsa (nelerin değiştiğine bağlı olarak 1 ile 45 dakika arasında sürer), bekleyen değişiklikler oluşturulur ve bu şekilde devam eder. Ayrıca gece (temiz, dolu) bir yapımız var, ancak her bir taahhütte (kabaca) gerçekleşen yapılar, herhangi bir testin başarısız olup olmadığını bize çok hızlı bir şekilde söylüyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.