Çok aşamalı sürekli entegrasyon - Multi-stage continuous integration - Wikipedia

Çok aşamalı sürekli entegrasyon bir yazılım geliştirme Bu teknik, entegrasyon sorunlarının kapsamını azaltırken yüksek düzeyde entegre paralel geliştirme etkinliği sağlamayı amaçladı.[1]

Teori

Çok aşamalı sürekli entegrasyon, temel bir birleştirici yazılım geliştirme modelinden yararlanır: yazılım, olgunlaşmamışlık durumundan olgunluk durumuna doğru aşamalar halinde ilerler ve iş, farklı parçaları birbirine entegre eden birbirine bağlı ekipler tarafından gerçekleştirilen mantıksal birimlere ayrılır. mesai. Mağazadan mağazaya değişen şey, aşamaların sayısı, ekiplerin sayısı ve boyutu ve ekiplerin karşılıklı bağımlılıklarının yapısıdır.

Önerilen uygulamalar

Çok aşamalı sürekli entegrasyon, sürekli entegrasyon, bu önerilen uygulamaları zaten izlediğinizi varsayar.

Proje ne kadar büyük ve / veya daha karmaşıksa, projenin istikrarsız hale gelme şansı o kadar yüksek olur. Proje büyüdükçe uyarılar ve bozuk yapılar artar. İlerleme azalır ve ana hat giderek daha kararsız hale gelir. Geliştiricilerin sayısı ve konumu büyüdükçe derleme hatası riski katlanarak artar.[2]

Önerilen uygulama 1

Her geliştirici kendi görevi üzerinde çalışır. Değişiklik yaptıkça, o takımın şubesine karşı sürekli entegrasyon yapılır. Başarılı olmazsa, o geliştirici (muhtemelen takım arkadaşlarının yardımıyla) şubeyi düzeltir. Bir sorun olduğunda, tüm geliştirme çabası değil, yalnızca o ekip etkilenir. Bu, modern bir yalın üretim tesisinde hattın durdurulmasının nasıl çalıştığına benzer. Hattaki biri "hattı durdur" kablosunu çekerse, bu tüm hattın değil, hattın yalnızca bir bölümünü etkiler.

Son yıllarda "konu" veya "özellik" dal modelinin takım tabanlı şube modeline göre popülerlik kazanması dikkat çekicidir. Örneğin, popüler Git-Flow dallanma modeline bakın [3]

Ekip, sık sık ikinci aşamaya geçmeye karar verecektir: ana hat ile entegrasyon. Bu aşamada ekip, ana hat geliştirme durumunda bir bireyin yapacağı şeyin aynısını yapar. Ekibin şubesi, ana hattaki tüm değişikliklere sahip olmalıdır (bir çalışma alanı güncellemesine eşdeğer), başarılı bir yapı olmalı ve tüm testler geçmelidir. Ana hat ile entegrasyon normalden daha kolay olacaktır, çünkü işlemdeki özellikler değil, yalnızca önceden entegre edilmiş özellikler olacaktır. Ardından, ekibin değişiklikleri ana hatta birleştirilerek ana hatta bir inşa ve test döngüsü tetiklenir. Bu başarılı olursa ekip, geliştiricilerin kendi görevleri üzerinde çalıştığı ilk aşamaya geri döner. Aksi takdirde ekip, sanki ana hatta çalışan bir bireymiş gibi ana hattı yeniden çalıştırmaya çalışır.

Değişiklikler olabildiğince hızlı yayılır ve yalnızca bir sorun olduğunda durur. İdeal olarak, ana hat geliştirme yaparken olduğu gibi değişiklikler de ana entegrasyon alanına yapılır. Aradaki fark, daha az sorunun ana entegrasyon alanına kadar gitmesidir. Çok aşamalı sürekli entegrasyon, entegrasyon sorunlarının kapsamını büyük ölçüde azaltırken yüksek derecede entegrasyonun paralel olarak gerçekleşmesine izin verir.[4]

Önerilen uygulama # 2

Çok aşamalı sürekli entegrasyon için her ekibin kendi şubesi olmalıdır.

Avantajlar

Çok aşamalı sürekli entegrasyonun birçok avantajı vardır:[kaynak belirtilmeli ]

  • Birim testleri başarısız olduğunda veya bir hata keşfedildiğinde, geliştiriciler kod tabanını zaman kaybetmeden hatasız bir duruma geri döndürebilirler. hata ayıklama;
  • Entegrasyon sorunları tespit edilir ve sürekli olarak giderilir - yayın tarihlerinden önce son dakika kesintisi olmaz;
  • Bozuk / uyumsuz kod için erken uyarı;
  • Çelişkili değişikliklerin erken uyarısı;
  • Tüm değişikliklerin anında birim testi;
  • Test, demo veya yayınlama amacıyla "güncel" bir yapının sürekli kullanılabilirliği;
  • Eksik veya bozuk kodu kontrol etmenin ani etkisi, geliştiricileri daha kısa geri bildirim döngüleri ile daha aşamalı olarak çalışmayı öğrenmeye teşvik eder.

Araçlar

Çok aşamalı sürekli entegrasyonu destekleyen araçlar şunları içerir:

Ayrıca bakınız

Referanslar

  1. ^ http://www.ddj.com/development-tools/212201506 Multi-Stage Continuous Integration erişim tarihi 2009-02-25, Poole, Damon, 2008-12-02 Dr. Dobb's, TechWeb tarafından yayınlandı
  2. ^ http://damonpoole.blogspot.com/2008/01/advanced-multi-stage-continous.html Gelişmiş Çok Aşamalı Entegrasyon, erişim tarihi 2009-03-19, Poole, Damon, 2009-01-17 Çevik Geliştirme Düşünceleri
  3. ^ http://nvie.com/posts/a-successful-git-branching-model/
  4. ^ http://www.cmcrossroads.com/content/view/12685/135/[kalıcı ölü bağlantı ] Büyük Ölçekli Sürekli Entegrasyon, Poole, Damon, 2009-01-19 CMCrossroads CMC Media tarafından Yayınlanmıştır
  5. ^ http://www.accurev.com/press-releases/030408-accurev-electriccloud.html Arşivlendi 2008-07-20 Wayback Makinesi AccuRev ve Electric Cloud, Çok Aşamalı Sürekli Entegrasyonu ve Ölçeklenebilir Çevik En İyi Uygulamaları Geliştirmek için İş Ortağı, erişim tarihi 2009-03-19
  6. ^ http://www.accurev.com/press-releases/030408-accurev-electriccloud.html Arşivlendi 2008-07-20 Wayback Makinesi AccuRev ve Electric Cloud, Çok Aşamalı Sürekli Entegrasyonu ve Ölçeklenebilir Çevik En İyi Uygulamaları Geliştirmek için İş Ortağı, erişim tarihi 2009-03-19
  7. ^ http://www.anthillpro.com/html/resources/build-pain-relief/team-based-streams.html Ağrısız Oluşturma Kılavuzu: Takım Tabanlı Akışlar
  8. ^ http://jazz.net/