Şirketimde CI ölçeklendirme sorunuyla uğraşıyorum ve aynı zamanda CI ve birden çok şubeye gelince hangi yaklaşımı benimsemeye çalışıyorum. Stackoverflow, Çoklu özellik dalları ve sürekli entegrasyonda benzer bir soru var . Yeni bir tanesine başladım çünkü daha fazla tartışma yapmak ve soruda bazı analizler yapmak istiyorum.
Şimdiye kadar, alabileceğim 2 ana yaklaşım olduğunu (veya belki başka bazılarını ???) buldum.
- Dal başına birden fazla iş kümesi (burada Jenkins / Hudson'dan bahsediyoruz)
- Ekstra işleri yönetmek için araçlar yazın
- İşleri toplu olarak oluşturma / değiştirme / silme
- Dal başına her iş için özel ayarlar (SCM url, dep yönetimi depo kopyaları)
- Kabuk araçları, karınca betikleri ve Jenkins CLI ile bu sorunu çözen insanlara bazı örnekler. Görmek:
- http://jenkins.361315.n4.nabble.com/Multiple-branches-best-practice-td2306578.html
- http://jenkins.361315.n4.nabble.com/Is-it-possible-to-handle-multiple-branches-where-some-jobs-should-run-on-each-one-without-duplicatin-td954729. html
- http://jenkins.361315.n4.nabble.com/Parallel-development-with-branches-td1013013.html
- Hudson işini otomatik olarak yapılandırın veya oluşturun
- CI kümenizde daha fazla yüke neden olur
- Geliştiriciler için geri bildirim döngüsü yavaşlıyor (altyapı yeni yükü kaldıramıyorsa)
- Ekstra işleri yönetmek için araçlar yazın
- 2 şube başına birden çok iş kümesi (geliştirme ve kararlı)
- İki grubu manuel olarak yönetin (bir işin yapılandırmasını değiştirirseniz, diğer dalda da değiştirdiğinizden emin olun)
- PITA ama en azından yönetilmesi gereken çok az
- Diğer ekstra dallar, geliştirmeye gönderilmeden önce tam bir test paketi alamaz
- Memnun olmayan geliştiriciler. CI ölçeklendirme sorunları neden bir geliştirici tarafından dikkate alınmalıdır? Basit bir isteği var, şubeye gittiğimde kodumu test etmek istiyorum. Basit.
- İki grubu manuel olarak yönetin (bir işin yapılandırmasını değiştirirseniz, diğer dalda da değiştirdiğinizden emin olun)
Görünüşe göre geliştiricilere kendi özel dalları için CI sağlamak istiyorsam, Jenkins için özel araçlara ihtiyacım var (API veya kabuk komut dosyaları veya başka bir şey?) Ve ölçeklendirmeyi halledebilirim. Veya onlara DEV ile daha sık birleşmelerini ve özel şubelerde CI olmadan yaşamalarını söyleyebilirim. Hangisini tercih edersiniz yoksa başka seçenekler var mı?