Günlük derlemeler ne kadar önemlidir? [kapalı]


20

Joel Testinin kriterlerinden biri günlük derlemelerdir. Fikir şu ki, eğer yapı bozulursa, onu bozan kişi onu düzeltmek için etrafta. Derleme düzeltilemezse, herkes eski bir sürüme bakmalı ve bunun üzerinde çalışmalıdır. Mümkün olduğunca birleştirme ve dallanmalardan kaçınmanın önemli olduğu merkezi sürüm kontrolünde bunun ne kadar kötü olabileceğini anlayabiliyorum, ancak bu sadece dağıtılmış sürüm kontrolü için küçük bir sıkıntı gibi geliyor. Buna katılıyor musun? Günlük yapıların önemli olmasının başka nedenleri var mı?


2
Joel bunu "Günlük derlemeler ve Otomatik testler" olarak güncellemelidir
Paul

1
Ya da daha iyisi "otomatik testlerle sürekli entegrasyon" - bazen bir gün üzerine inşa etmiyoruz, bazen günde bir düzine kez inşa ediyoruz. Makineler bunu yaptıktan sonra önemli değil.
Wyatt Barnett

@WyattBarnett Ben tamamen katılıyorum =) (check-in aktivite olmadıkça) her 15 dakikada bir kod yapıları başlattı bir proje üzerinde çalıştı ve o was awesome.
Patrick Hughes

Yanıtlar:


19

Burada dikkat edilmesi gereken önemli nokta, düzenli derlemelerin hataları daha sonra değil, daha erken yakalamaya yardımcı olmasıdır . Günlük olmak zorunda değil , genellikle yeterli. İdeal olarak, birim testlerinizi de gerçekleştirebilir.

Amaç, bir yapının son test aşamasından önce ne zaman kırıldığını bulmak ve mümkün olan en kısa sürede bulmaktır.

Sadece ana geliştirme dal (lar) ınızı oluşturmak için ayarlayın.

İş yerinde kullanıyoruz (saatlik olarak inşa etsek de) ve çoğu zaman kurmayı unuttuğumuzda, sorunları bırakmadan sadece birkaç saat önce buluyoruz.


2
Günlük inşa ve test .
Paul

1
@ Paul: Sadece daha sık yapamıyorsanız. Her taahhütte (bazı histerezis zamanıyla) bunu yapmak güzel.
Donal Fellows

4

Buna biraz eklemeniz gerekiyor (ve @GoodEnoughs):

ancak bu yalnızca dağıtılmış sürüm kontrolü için küçük bir sıkıntı gibi görünür.

Kesinlikle hayır - bir "sunucu" derlemesinin yaptığı şey, bagajınızın testlerini temizlemeden daha fazla veya daha az derleyeceğini ve geçeceğini söyleyecektir (ortamınızda yapmanız gereken yapılandırma miktarı azalır).

DVCS'ye geçiş yapmayı düşünüyorum ama bunu yaptım bile, sürekli entegrasyonumu soğuk ölü ellerimden sürükleyeceksiniz.

Basit bir örnek vermek gerekirse - bir noktada dağıtılıyor ya da dağılmıyor "a" özelliği geliştiriyor "özelliğini geliştiriyorsunuz - bir noktada hepsini dikmeniz gerekiyor - eğer taahhüt ettiğinizde uygulamanın oluşturacağı bir dosya eklemeyi unutursanız ama başka hiçbir yerde olmayacak. Bu yüzden yapıyı "bagajınıza" ittiğinizde, Sürekli Entegrasyon tetiklenecek ve yapı başarısız olacak ve herkesin o kadar tam olmayan kodunuzu çekmeden önce umarım ve umarım adım atabilirsiniz.

Birden fazla geliştiriciye sahip bir proje üzerinde çalışıyorsanız, sürüm sürümlerinin nereden geldiğini tanımlamanız gerekir - yürürlükteki bagaj - bu, sürüm kontrolünüzün nasıl çalıştığından bağımsız olarak doğrudur.

Bir özelliği eklediyseniz - özellikle diğer insanların bağımlılığı olan bir özellik - "yaşamak" için zorlandığında geliştirici ortamınızdan başka bir yerde testler oluşturduğundan ve geçtiğinden emin olabilmek için. Dahası, benim inşa sunucusundan - bir "kesin" derleme nasıl tür onun türlerden dağıtmak. Sonuçta kullanıcı tarafından tetiklenen dağıtım yapıları olacak. Onun bunun yuvarlak çalışabilir söyleyerek iyi - Size ihtiyacım yok eğer (ve adres bulmak ve eksik dosyaları işlemek için bir ofiste yuvarlak dev kutuları şifreli).

Hepsi biraz güçlü mü? Bilmiyorum - ama inşa sunucum, sahip olduğum şeylerden biri geri vermek istemediğim şeylerden biri.


3

Günlük yapıların çok önemli olduğuna inanıyorum. Farklı saat dilimlerinde dağıtılmış bir ekibiniz varsa, ekibin çoğu için kabaca 'gün sonu' olan zamanı bulmak en iyisidir. Buna ek olarak, günlük yapıların otomatik bir test bileşeni varsa, o zaman daha arzu edilir.

Merkezi kaynak kontrol sistemleri günlerinde, kaynak kodda bir şey değiştiğinde her 5-10 dakikada bir çalışan sürekli yapıları savunurdum. Derleme hatası, takımın çoğunu yavaşlatma potansiyeline sahip olduğundan. Dağıtılmış kaynak kontrol sistemleri çalıştıran kuruluşlar için, geliştiriciler 'bozulmamış' kod tabanına doğrudan daha az sıklıkla dokundukları için sürekli bir yapıya ihtiyaç olmayabilir.


1

İdeal olarak, inşa edilmesi yarım günden fazla süren muazzam bir şey inşa etmezseniz, günde bir kereden fazla inşa edersiniz. Hudson veya TeamCity gibi sürekli bir entegrasyon sunucusu kurduktan sonra , derlemeler otomatik olarak, genellikle her saatte veya her taahhütte gerçekleşir ve herhangi bir sorun olursa size bildirilir.

Özellikle de yapının bir parçası olarak otomatik testler çalıştırıyorsanız, hataları erken yakalamak için iyi bir yoldur. Derlemenin bir geliştiricinin makinesinde çalıştığı ancak başka bir yerde çalışmadığı, depodan veya ortamdan bir şey çıkarıldığı için yapılandırma hatalarını bulmak için özellikle yararlıdır.

Daha gelişmiş sürekli entegrasyon sunucuları da metrikleri zaman içinde izlemenize olanak tanır (örn. Kod kapsamı yüzdesi, oluşturma süresi, kod satırları vb.)


1

Günlük Yapılar tamam. Dürüst olmak gerekirse, Joel'in testinin bu günlerde biraz dışarı çıktığını düşünüyorum.

Bence gün boyunca sürekli olarak inşa etmeli, ünitenizi, sisteminizi ve fonksiyonel seviye test durumlarınızı çalıştırmalı ve ideal DB ve ortam sürümleme mekanizmalarının yerinde olduğunu doğrularken aynı zamanda çevre gibi bir sahneye paketleme ve dağıtmalısınız. beklendiği gibi çalışıyor.

Oluşturma veya dağıtım süreleri aşırı ise, fiziksel veya yazılım ram diskleri, daha hızlı internet bağlantıları, paralel oluşturma yapıları, vb. İle ilgili bu sorunlardan bazılarını ortadan kaldırmayı düşünün. Yapı kesmelerini hızlı bir şekilde tanımlayarak tasarruf edeceğiniz zaman, donanım maliyetini oldukça hızlı bir şekilde amorti edecektir. .


1

Günlük derlemeler önemli değildir. Her zaman başarılı olan günlük yapılar (veya sadece bir saat boyunca kırılmış olanlar). Yapı bozulduğunda CI'ye sahip olmak zamanın% 70'i çok yararlı değildir, çünkü şey çoğunlukla bozulursa bir hatayı tanımlamanıza yardımcı olmaz.


0

Günlük oluşturma, test ve hazırlama sunucusuna dağıtmak gerektiğini düşünüyorum.

'Günlük derlemenin' ardındaki fikir, herkesin projenin gerçek durumu hakkında bir fikre sahip olması için test uzmanlarının ve proje yöneticilerinin çalıştırabilecekleri her zaman hazır bir şeylere sahip olmaktır.

Geçmişte 'günlük derlemeden' sonra masaüstü uygulamalarıyla bir test veya proje yöneticisi hemen uygulamayı çalıştırabilir, böylece konuşlandırma adımından bahsetmek zorunda kalmazsınız.

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.