.NET portföyü için otomatik derleme platformu - en iyi seçim? [kapalı]


10

Oldukça geniş bir .NET uygulamaları portföyü ile ilgileniyorum. Ayrıca portföyde diğer platformların üzerine inşa edilmiş eski uygulamalar vardır - yerel C ++, ECLIPS Formları, vb.

Şu anda tüm bu uygulamalar için yapıları yöneten NAnt üstünde karmaşık bir yapı çerçeve var. Yapı çerçevesi NAnt'yi bir dizi farklı şey yapmak için kullanır:

  • Subversion'dan kodu çekin ve Subversion'da etiketler oluşturun
  • .NET için MSBuild veya diğer platformlar için diğer derleyiciler kullanarak kodu oluşturun
  • Sürüm numaralarını artırmak için AssemblyInfo dosyalarının içine göz atın
  • Derlemelere / sürümlere dahil edilmemesi gereken belirli dosyaların silinmesi
  • Dağıtım klasörlerine kod yayınlar
  • Fermuarlar yedekleme amacıyla kodlanır
  • Windows hizmetlerini dağıtın; başla ve durdur
  • Vb.

Bunların çoğu sadece NAnt ile kendi başına yapılabilir, ancak NAnt'ın çevremize özgü bazı şeyleri yapması için birkaç uzantı görevi yaptık. Ayrıca, yukarıdaki bu işlemlerin çoğu, farklı uygulama derleme komut dosyalarımızın çoğunda genelleştirilir ve yeniden kullanılır, böylece mantığı tekrarlamayız. Bu yüzden basit NAnt kodu ve basit yapı komut dosyaları değildir. Bir derlemeyi yürütmek için bir araya gelen düzinelerce NAnt dosyası vardır.

Son zamanlarda NAnt'den birkaç nedenden dolayı memnun kalmadım: (1) sözdizimi sadece korkunç - XML'nin üstündeki programlama dillerinin bakımı gerçekten korkunç, (2) proje asmada öldü; son zamanlarda bir ton güncelleme olmadı ve hiç kimse gerçekten dümende değil gibi görünüyor. .NET 4 ile çalışmayı denemek, bu etkinlik eksikliği nedeniyle bazı acı noktalarına neden oldu.

Yani, tüm bu arka plan ortadan kalktığında, işte sorum. Yukarıdaki listeye dayanarak gerçekleştirmek istediğim bazı şeyler göz önüne alındığında ve öncelikle bir .NET mağazasında olduğum göz önüne alındığında, aynı zamanda .NET dışı projeler de inşa etmem gerekiyor, dikkate almam gereken NAnt'a bir alternatif var mı geçiş?

Radarımdaki şeyler arasında Powershell ( psake ile veya psake olmadan ), MSBuild tek başına ve tırmık var . Bunların hepsinin artıları ve eksileri var. Örneğin, MSBuild yeterince güçlü mü? Yıllar önce kullandığımı hatırlıyorum ve NAnt kadar güçlü değildi. Ekibimin Ruby'i sadece tırmık kullanarak yapı yapmak için öğrenmesini gerçekten istiyor muyum? Psake, portföyümü sabitlemek için bir projeye gerçekten olgun mu? Powershell "metale çok yakın" ve ben kendi başına kullanmak için benzer psake benzer kendi yapı kitaplığı yazmak zorunda kalacağım?

Dikkate almam gereken başka araçlar var mı? Eğer önemli derecede karmaşık bir .NET portföyü ile ilgileniyorsanız, hangi derleme aracına bakardınız? Ekibiniz şu anda ne kullanıyor?

Yanıtlar:


2

Zaten TeamCity kullanıyorsanız, ihtiyacınız olan şeylerin çoğu için mevcut özelliklerini kullanabilmeniz gerekir. Visual Studio .sln dosyalarının oluşturulmasını yerel olarak destekler ve tüm projeleriniz için daha fazla iş yapmanız gerekiyorsa, derleme makinelerinizde .NET Framework'ün .targets dosyalarını değiştirebilirsiniz, böylece tek tek csproj dosyalarını değiştirmeniz gerekmez.

Otomatik olarak Subversion'dan, zip eserlerinden kontrol eder, hangi dosyaların konuşlandırılabilir eser olarak kabul edildiğini kontrol etmenizi sağlar. Yeni sürüm (6.0) birden fazla derleme adımına da izin verir, bu nedenle yapay öğelerin bir kopyaya xcopy dağıtımı için bir fırsat vardır.

Ayrıca, bir yapının parçası olarak (komut satırı çalıştırıcısı aracılığıyla) çalışabilecek kendi uygulamalarınızı / görevlerinizi yazabilir ve istediğiniz her şeyi yapabilirsiniz (Windows işlemlerini başlatma / durdurma gibi).


3

İşlere üç farklı etkinlik olarak yaklaşıyoruz, Oluştur, Dağıt ve Kur. Güç sunucusu için birkaç açıklama içeren derleme sunucusu için TFS kullanıyoruz. Daha sonra Powershell'i, oldukça karmaşık olan ve hem yerel hem de buluttaki birden çok sunucuda bulunan tüm Dağıt ve Yükle parçalarını gerçekleştirmek için kullanırız. Powershell'i MSBuild veya başka bir araç üzerinden öğrenmekten çok mutlu oldum. Geçmişte Visual Build ile de iyi deneyimlerim oldu.


2

Bir göz atın Hudson çifti olarak ve MSBuild. Güç, MSBuild'in güçlü yetenekleri ve hudson'ın eklentileri ile birlikte gelir .

Örneğin, hudson'u kullanabilir ve MSBuild'e geçiş yapana kadar NAnt komut dosyalarınızı çalıştırabilir ve ardından MSBuild komut dosyalarınızı da çalıştırabilirsiniz.

Noktalarınıza özellikle değinmek:

  • Subversiyon ve Etiketleme
  • MSBuild
  • AssemblyInfo'ya göz atmak SO'da istendi , ancak çözüm beğeninize göre olmayabilir
  • MSBuild dosyaları kolaylıkla silebilir
  • "Dağıtım klasörlerine kod bırakın" - derleme sisteminin bu adımı atlamasını ve birkaç yöntem kullanarak otomatik olarak dağıtmasını sağlayabilirsiniz. Veya isterseniz FTP yapabilirsiniz .
  • MSBuild zip yapabilir
  • Windows hizmetleri, yine MSBuild burada arkadaşınız.

MSBuild hakkında bilgi için teşekkürler. Görünüşe göre orada son kez kullanmaya çalıştığımdan daha fazla güç var. Hudson ile ilgili olarak, bu, şu anda kullandığımız TeamCity gibi diğer CI sunucularının ötesinde bir fayda sağlıyor mu? Burada çok fazla statükoyu üzmekten kaçınmaya çalışıyorum ve aynı zamanda CI sunucumuzu değiştirirken aynı zamanda yapı komut dosyalarımızı değiştirmek daha acı verici görünüyor.
RationalGeek

Benim düşünceme göre, TeamCity'nin harika olduğunu düşünüyorum ... ve Hudson daha iyi. Harika bir şey yapmak isteyene kadar aynı işlevleri yerine getirdikleri görülebilir - o zaman hudson kazanır. Dürüst olmak gerekirse, hudson RSS, SMS, XFD'ler ile güncel kalırken analiz edebilir (stylecop / fxcop) -> build-> test-> tag-> yerel ve şirket dışı yedekleme-> konuşlandırması.
Steven Evers

Hmm ... TeamCity ile bu listedeki hiçbir şey imkansız değil, belki Hudson ile daha kolay. Her iki şekilde de, TC ile bazı ağrı noktalarına çarpmazsak, yakın zamanda değişeceğimizi sanmıyorum.
RationalGeek

@jkohlhepp: Zorluk, aynı alanda birçok çözümün bulunması. Günün sonunda, Hudson olduğunu kolaydır ve % 100 ücretsiz. IIRC, TC'nin Hudson'da sahip olabileceği bir şey çok etmenli bina.
Steven Evers

2

Kullandığım Otomatik Yapı Studio . Ondan kurtulmak istiyorum.

% 100 MS Build veya Team Foundation Build'a geçmememin tek nedeni , bugün mükemmel çalışan komut dosyalarını yeniden oluşturmanın maliyetidir. Senaryolar fazla değişmiyor ...

Ancak, bir sonraki ürün için bu, aşağıdaki nedenlerden dolayı tereddüt etmeden Team Foundation Build olacaktır (daha fazlasıdır):

  • Dağıtımı kolaydır (en son sürüm: 2010)
  • Visual Studio ve Team Foundation Server ile tamamen entegredir
  • MS Build gibi bir standart haline geliyor
  • Bizspark ile ücretsizdir (yeni başlayanlar için)

.NET'te olduğunuz için TFB'yi kullanmanızı tavsiye ederim.

Bizspark'a başvuramazsanız veya lisansı satın almayı göze alamazsanız, CruiseControl.NET + MS Build ve birkaç destek komut dosyasına gidebilirsiniz . Çalıştığım büyük bir yardımcı şirkette , tüm projelerimizi oluşturmak, test etmek, dağıtmak ve raporlamak için CruiseControl.NET'i kullandık . Otomatik web hizmeti dağıtımını içeriyordu.


Bu seçeneği düşünmemiştim, ama TFS'yi hiç kullanmadığımız ve geçmişte (bütçe ve diğer nedenlerle) buna geçme girişimlerini veto ettiğimiz için bizim için gerçekçi bir seçenek olacağını düşünmüyorum. Ancak ilginç bir fikir olan öneri için teşekkürler.
RationalGeek

O kadar geniş değil. Yönetiminiz fiyat duyarlıysa, MS Build mükemmel bir eşleşme olacaktır. Eskiden sadece MS Build + CruiseControl.NET ile çalışıyordum ve harika çalıştı! Cevabımda ekleyeceğim.

@Pierre 303: Merak etmek uğruna, Automated Build Studio'dan neden kurtulmak istiyorsun?
RationalGeek

@Pierre 303: TFS'nin gideri tek endişe değil. Mağazam daha büyük bir işletmenin bir parçası ve Subversion ve diğer araçlar üzerinde standartlaştırılmış ve "standart dışı" olmak ve TFS ile devam etmek siyasi sorunlara neden oluyor.
RationalGeek

@jkohlhepp: kullanımı kolay değil, Visual Studio (en azından sahip olduğum sürüm) ile iyi entegre değil ve standart olmaktan çok uzak.

2

FinalBuilder , güzel bir GUI ve ücretsiz olarak oluşturulmuş bir oluşturucu sunucu uygulaması ile istediğiniz tüm öğeleri yapabilir.


2

Şu anda MSBuild (> 3000 satır komut dosyası) kullanarak yaptığınız şeyi (yani derlemeden ambalaja) yapıyoruz. CI CruiseControl.Net kullanıyor ve umarım gelecekte TeamBuild'e geçebilirim. MSBuild hantal (XML'de programlama), ancak özellikle toplu işleme ve bağımlılık izleme oldukça güçlüdür. Yeni .Net sürümlerinde aktif olarak korunur ve geliştirilir ve Visual Studio ve TFS'de derleme sisteminin temelini oluşturur. Ayrıca visual studio proje dosyaları aslında MSBuild projeleridir ve çeşitli uzantı noktalarına bağlanabilirim. MSBuild uzatma paketibirçok ek görevi vardır ve programla kendi görevlerinizi oluşturmak son derece kolaydır. MSBuild'e ciddi bir düşünce vermenizi öneririm. Son zamanlarda powershell öğreniyorum ve dağıtım aşamasında özellikle sertifikalar, IIS vb. Yükleme ve yapılandırma gibi belirli görevler için kolay buluyorum.

MSBuild projesini sözdizimini anladığı ve size intellisense sağladığı için VisualStudio'da düzenleyin.
MSBuild Başlatma Pedi - Kabuk uzantıları için
MSBuild SideKicks - Betikleri grafik olarak düzenleyin, yürütün ve hatalarını ayıklayın.


1

Belki de derleme betiğinizden çok fazla şey soruyorsunuz ve derleme sunucunuzdan yeterli değil - ekip şehri ile, mermilerinizin her birini, mantıklı olan ve TeamCity derleme görevlerini kullanan herhangi bir dilde veya yığında gerçekleştiren basit komut dosyalarına kolayca sahip olabilirsiniz. uygun şekilde bir araya getirin.


Bu yanıtların çoğunun CI'yi derleme komut dosyalarıyla eşitlediği görülüyor. Her zaman inşa komut dosyalarını akıllılar olarak düşünmüştüm ve CI sunucusu sadece tetikleyicilere dayalı yapıları başlatan şey olarak düşünmüştüm. Ama belki haklısın ve bunu yeniden düşünmem gerekiyor.
RationalGeek

1

TeamCity'yi şiddetle tavsiye ederim, yapılandırılması ve kurulumu kolaydır. MSBuild, vs2008 / 2010'daki tüm proje / çözüm dosyalarının teknik olarak MSBuild dosyaları olması nedeniyle NAnt yerine tercih edilir, ancak TeamCity'yi MSBuild veya NAnt ile yapılandırabilirsiniz.

OfCourse, TeamCity size mal olacak. Şahsen bir seçenek verdim, komisyonu tercih ederim, çünkü Ruby araçlarıyla sürtünme, psake de iyi bir aday olmasına rağmen diğerlerine kıyasla.


1
20'den az derleme yapılandırmanız ve 20'den az kullanıcınız varsa FYI TeamCity ücretsizdir. Ayrıca, açık kaynak kodlu bir projeyseniz, onlara ücretsiz sınırsız lisans için başvurabilirsiniz.
RationalGeek

0

Hudson'ı düşündün mü ? Java uygulama sunucusunun çalışmasını gerektirdiği için bir güçlük olabilir, ancak mevcut NAnt komut dosyanızı kullanmanıza ve diğer araçları kullanarak bunun üzerine inşa etmenize izin verebileceğini düşünüyorum .


Hudson daha çok sürekli bir entegrasyon platformudur ve gerçekte bir inşa platformu değildir. Bir CI sunucumuz var - TeamCity, NAnt ile iyi çalışıyor. Ancak, NAnt'yi değiştirmek istememin nedenleri, NAnt komut dosyalarının bakımının acı verici olmasıdır. Hudson'da mevcut komut dosyalarını kullanmak bu sorunu çözmez. Yine de öneriniz için teşekkürler.
RationalGeek

IMHO Hudson, VS projelerinde doğru bir şekilde yaptıklarından çok sınırlıdır. Check-out'lar, beklediğiniz şekilde değişiklik kümelerine bağlı değildir ve sahne arkasında, web arayüzü ve çok sayıda eklenti aracılığıyla oluşturduğunuz bir toplu iş dosyasını çalıştırmaktan başka bir şey yapmaz. Olsa iyi çalışmasını alabilirsiniz güzel tür raporlama.
Bill
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.