Sürekli entegrasyon için CruiseControl [.Net] mi TeamCity mi?


117

Pratik deneyime dayalı olarak hangi otomatikleştirilmiş derleme ortamını daha iyi düşündüğünüzü sormak istiyorum. Biraz .Net ve biraz Java geliştirmeyi planlıyorum, bu yüzden bu iki platformu da destekleyen bir araca sahip olmak istiyorum.

Yığın akışı geliştirmede kullanılan CruiseControl.NET ve farklı işletim sistemi platformlarında ve farklı programlama dillerine dayalı aracılar oluşturma desteğiyle TeamCity hakkında etrafı okudum ve öğrendim . Öyleyse, her ikisinde de bazı pratik deneyimleriniz varsa, hangisini tercih edersiniz ve neden?

Şu anda, çoğunlukla aracın kullanım kolaylığı ve yönetimiyle ilgileniyorum, CC'nin açık kaynak olması ve TC'nin çalıştıracak çok sayıda projeniz olduğunda bir noktada lisanslamaya tabi olması gerçeğinden çok daha az ilgileniyorum (çünkü ben az miktarda proje için ihtiyacınız var).

Ayrıca, yukarıda belirtilenleri karşılayan başka bir araç varsa ve tavsiye edilmeye değer olduğuna inanıyorsanız, bunu tartışmaya dahil etmekten çekinmeyin.

Yanıtlar:


111

Cruise Control'ü (java sürümü) ortaya çıkardığından beri Sürekli Entegrasyon araçları üzerinde ve bunlarla çalıştım. Bir noktada neredeyse hepsini denedim. TeamCity ile asla olduğum kadar mutlu olmamıştım. Kurulumu çok basittir ve yine de büyük miktarda güç sağlar. Derleme sürelerini, birim test sayısını, geçme oranını vb. Gösteren derleme istatistikleri sayfası çok güzel. TeamCity'nin proje ana sayfası da çok değerlidir. Basit. Ayrıca bazı karmaşık MSBuild komut dosyalarını kullandık ve zincirleme oluşturduk. Ayrıca iki TeamCity güncellemesi yaptım ve acısızdılar.

CruiseControl.NET de iyi çalışıyor. Kurulumu daha zordur, ancak daha uzun bir geçmişe sahiptir, bu nedenle web'de çözüm bulmak kolaydır. CruiseControl.NET açık kaynak olduğundan, istediğinizi ekleme veya değiştirme seçeneğiniz de vardır. CruiseControl.NET'i piyasaya sürüldüğünden beri kullandım ve cc.tray için bazı eski kodlar yazdım (neyse ki daha iyi bilen biri tarafından yeniden yazılmıştır).

ThoughtWorks'ten Cruise da oldukça iyi görünüyor ancak geçiş yapmam için zorlayıcı bir neden göremiyorum. Yeni bir projeye başlamış olsaydım deneyebilirdim, ancak TeamCity kompleksi oldukça acısız hale getirirken basit şeyleri basitleştirmek için harika bir iş çıkardı.

Düzenleme: Birkaç hafta önce TeamCity 5.0'a yükselttik ve bu başka bir acısız yükseltmeydi. Geliştirilmiş kod kapsamı yeteneklerinden ve GIT desteğinden yararlanmamızı sağlar. Ayrıca, bir süredir kullanılan kişisel derleme ve önceden test edilmiş tamamlama özelliklerini de kullanıyoruz. TeamCity'nin gelişmeye devam ettiğini ve kullanımının hala kolay olduğunu belirtmek için cevabı güncellemem gerektiğini düşündüm.


Tüm deneyimlerinizle, üzerinde basit bir .NET projesi oluşturmanın bir ekran görüntüsünü paylaşmak ve TeamCity ile çalışmak (JING (ücretsiz ekran kaydı) veya başka bir araç kullanarak) ve bağlantıyı buraya veya başka bir yere göndermek için biraz sahip olup olamayacağınızı merak ediyorum. bununla mücadele eden hepimiz iyi bir başlangıç ​​yapacağız :) Teşekkürler.
balexandre

2
@balexandre - Takım şehri belgelerini oldukça iyi buldum. Ve @ boj'un cevabı, burada iyi bir ekran yayınına
Mike Two 2

Sahip olduğum CCNet imajından dolayı her zaman CI'dan korktum, geçen hafta TeamCity 6.5'i denedim ve mutlak bir zevkti. tek bir xml / yapılandırma dosyasına dokunmadı.
kay.one

1
Şu anda CC.Net kullanıyorsanız ve Team City'ye taşınmak istiyorsanız, acı veriyor mu? TC, MSI dosyalarını nasıl üretir?
Wes

@Wes, bunun hala senin için geçerli olup olmadığını bilmiyorum, ancak CC.Net'te çalışan 20'den fazla projemiz var, ancak son zamanlarda sahip olduğumuz bazı Android projeleri için TeamCity'yi uyguladım. Şimdiye kadarki en büyük acı, Ant'ı öğrenmekti, ancak projeleri CC.Net'e koymuş olsaydım bu yapmam gereken bir şeydi. Yönetimi, ihtiyaç duyacağımız ekstra yapı yapılandırmalarını ödemeye ikna edebilseydim (bir noktaya kadar ücretsizdir), özellikle TeamCity'de bir esinti ve CC'de bir XML bataklığı olan yapılandırma nedeniyle, tüm projelerimizi mutlu bir şekilde TeamCity'ye taşırdım. Ağ.
johnc

33

CC.NET'in büyük bir hayranıydım / ben. CruiseControl'de şu anda 5 projemiz var ve harika çalışıyor. Yapılandırma dosyalarını elle yazmak zahmetli olabilir ama sorun değil.

Ama .

Sonra Kona: Sürekli Entegrasyon ve Daha İyi Birimi Test screencast (TeamCity hakkında ilk 1/3) Ben de TeamCity kontrol edeceğiz. Entegre birim test panosunu ve konfigürasyon arayüzünü seviyorum.

Bence CC.NET veya TeamCity'yi seçmeden önce herkesin bu videoyu izlemesi gerekiyor.

ps: Umarım internette de değerli bir CC.NET videosu vardır.


15

Açık ara en sevdiğim CI sunucum Hudson. Kurulumu ve bakımı kolay, geliştiricilere ve geliştirici olmayanlara eğilimleri göstermek için çok sayıda güzel grafik ve ücretsiz.

Şu anda bir projede TeamCity kullanıyorum ve genel olarak bundan memnunum, ancak ürettiği grafiklerin çoğu özellikle kullanışlı değil ve yapılandırmak Hudson'dan daha karmaşık.

Bununla birlikte, TeamCity güçlüdür, birçok kullanım için ücretsizdir ve bir öldürücü özelliğe sahiptir: Uzaktan Çalıştırma. Çekinizi doğrudan IDEA veya Eclipse'den "önceden taahhüt edebilir", TeamCity sunucusunda bir veya daha fazla yapılandırma yapılandırması çalıştırabilir ve değişiklikleri yalnızca derleme başarılı olursa gerçekleştirebilirsiniz (örneğin, derlemeler ve tüm testler başarılı olursa).

Hem TeamCity hem de Hudson'ı birkaç saat içinde hazırlayıp çalıştırabileceğinizi düşünürsek, aklınıza gelebilecek diğerleriyle (CruiseControl gibi) birlikte ikisini de yan yana çalıştırmaya değer olabilir. Yan yana karşılaştırma yapmak için bir CI sunucusunu hızlıca ayakta tutamıyorsanız, en azından kurulumu ve / veya yapılandırması kolay bir veri noktanız vardır.


6
Hudson için +1. Ayrıca bkz: Hudson'ı bir .NET oluşturma aracı olarak kullanma: stackoverflow.com/questions/616149/… ; CruiseControl vs Hudson: stackoverflow.com/questions/604385/…
Jonik

12

İkisini de farklı projelerde başarıyla kullandım. Kurulum ve yönetim açısından Team City ile uğraşmak çok daha kolaydır. CC ile yaptığınız gibi .config dosyalarıyla uğraşmanız gerekmez ve kurulum çok kolaydır. Çok fazla projeniz olmadığı için, Team City'nin $ $ tutarında olduğu noktaya gelene kadar, CC yerine Team City'yi tavsiye ederim.


12

Hem CC.net hem de TeamCity kullandım. Kuruluşum için TeamCity'yi kurmak ve kurmakla görevlendirildim (5 geliştirici). Kuruluşumuz, kaynak denetimi için Perforce ve heterojen işletim sistemlerinde çalışan birden çok derleme aracı gibi bazı yaygın olmayan uygulamalar ve araçlar (en azından bizim boyutumuzdaki kuruluşlar için) kullanır ve bu da bazı başlangıç ​​kurulum sorunlarına neden olur. Bununla birlikte, e-posta yoluyla destek, her şeyi ayarlamada kesinlikle birinci sınıftı. Aptal sorularıma kelimenin tam anlamıyla dakikalar içinde cevaplar aldım.

Arayüz sezgisel ve duyarlıdır, aynı zamanda özelliklerle doludur. Ürün çok pahalı geliyor. Yapılandırma kolaydır ve web arayüzü, aracı veya sunucu hizmetlerini yeniden başlatmadan, hatta sayfayı yenilemeden kendini güncelleyecek kadar akıllıdır.

Ürünün hemen hemen her gelişmiş özelliğini kullandığımızı ve şimdiye kadar hiç hata bulamadığımızı hissediyorum. Ndepend entegrasyonu, yuvalanmış NAnt betikleri, Perforce sürüm etiketlemesi, siz adlandırın, biz yapıyoruz.

TeamCity'yi, sürekli bir entegrasyon sunucusu veya herhangi bir yapı sunucusu arayan herkese şiddetle tavsiye ederim.


Perforce alışılmadık bir araç mı? Perforce, her büyüklükteki ekip için harika. Kendim ev geliştirmem için kullanıyorum :)
sonstabo

@sonstabo, buna katılıyorum, çoğu küçük şirket SVN veya GIT ile gidiyor ve Perforce çoğunlukla büyük şirketlerde kullanılıyor. Perforce kullandım ve beğendim ama kullandığımda 1.000 geliştirici bir şirketteydim.
Samuel Neff

3

Size alternatif araçlar atmak istemeden :-)

Hudson harika bir açık kaynak alternatifi, CC ve CC.net kullandım ve bunların harika araçlar olduğunu düşündüğümü itiraf ediyorum. Kurulumu ve bakımı çok daha kolay göründüğü için Hudson'a geçmeyi düşünüyorum.

https://hudson.dev.java.net/


1
+1 Hiç kimse .Net CI için Hudson'ı düşünmüyor gibi görünüyor. Cruise Control, Team City ve Bamboo'ı kullandım ve Hudson'ı bütçenin büyük bir sorun olduğu çoğu durumda iş için en iyi araç olarak buldum.
Dan Rigby

3

Karar vereceğiniz sistemin, işlemek için ihtiyaç duyacağınız proje sayısına göre ölçeklendiğinden emin olun ...

CruiseControl.Net kullanıyorum ama bunu çok sayıda proje oluşturmak için tavsiye etmem ... Uygulamalara oluşturduğum birçok C ++ statik kitaplığımın olduğu (muhtemelen biraz garip) bir düzenlemem var. Her kitaplık diğer kitaplıklara bağlıdır ve uygulamalar bir dizi kitaplık alır ve derler. Her kitaplığın bir test paketi vardır. Her uygulamanın bir test paketi vardır. 5 derleyici ve (windows) platformlarının varyasyonları için oluşturuyorum.

Bulduğum ilk şey, CC.Net'in proje tetikleyicilerinin gerçekten ihtiyacınız olan şey olmadığı ve çoklu tetikleyicinin proje tetikleyicileriyle iyi çalışmadığı oldu. Projenin tetiklenme şekli (projenin depolandığı sunucuya bağlanmak için uzaktan erişim kullanırlar (aynı CC.Net örneği tarafından yönetilen bir proje olsa bile) ve ardından tüm projeleri bu sunucudan çekip sırayla listede arama yapın İlgilendiğiniz projeyi aramak ...) iyi ölçeklenmedikleri anlamına gelir. Belirli sayıda projeyi aştığınızda, CC.Net'in yapı makineniz için CPU'nun çoğunu aldığını göreceksiniz.

Tabii ki, açık kaynak kodlu, bu yüzden düzeltebilirsiniz ... Ve eminim, az sayıdaki birbirine bağlı olmayan projeler için iyidir.

Yaşadığım sorunlar ve CC.Net için bazı yamalar hakkında daha fazla ayrıntı için buraya bakın http://www.lenholgate.com/archives/cat_ccnet.html


oh ... bu bilgi için teşekkürler, değerli gönderi. özellikle TC'nin basit bir kurulum olduğu ve bunun sınırlamasının CC & CC.Net'in devreye girebileceği proje sayısı olduğu söylendiğinde. ama dediğiniz gibi, proje sayısı arttığında sorunlara giriyor ... tekrar teşekkürler
zappan

CC.Net'in yoğun bir şekilde saldırıya uğramış sürümünde bile sorunlar yaşıyorum çünkü CC.Net zamanlama için proje başına bir iş parçacığı yaklaşımı kullanıyor ve bu sadece saçma bir tasarım IMHO.
Len Holgate

2

Yakın zamanda cc .net kurdum. Harika bir uygulama ama biraz sabır gerektiriyor. Yapılandırma dosyalarını çok fazla not defterinde düzenleyeceksiniz :)

Bir süredir iyi destekleniyor ve normalde daha önce yapmak istediklerinizi yapmış birini bulabilirsiniz. Web arayüzü de .net'tir, bu da bir Microsoft mağazası olduğumuz için bizim için bir artıydı.

TeamCity'yi kullanmadım ama epeyce öneri duydum ve güzel görünüyor.


2

Önceki şirketimde Linux'ta CruiseControl (Java sürümü) kurma ve çalıştırma konusunda deneyimim oldu. Çoğu insanın önerdiği gibi, kurulum için en önemsiz şey değildir. Çalışabilir / yönetilebilir yapılandırma bulmak için çerçevesini anlamanız gerekir. Bununla birlikte, bu kamburluğu bir kez geçtiğinizde, CruiseControl'ün farklı senaryolara uyacak farklı türden şeyler yapmanıza izin verecek kadar esnek olduğunu hissediyorum.

CruiseControl dokümantasyonunun yanı sıra, wiki sayfasında da bazı yararlı bilgiler var.

TeamCity ile doğrudan bir deneyimim yok. Test öncesi kesinleştirme özelliği yeterince ilginç görünse de.

Ona bir görünüm vermek olabileceğini diğer CC aracıdır Bambu Atlassian dan. Kurulumu çok daha kolay ve arayüz daha güzel. Yine de CruiseControl'ün sunduğu kadar esnek değil.


1

Düşünmek isteyebileceğiniz üçüncü bir seçenek: Thoughtworks 'Cruise. CruiseControl üzerine inşa edilmiştir, ancak çok daha fazla özellik, daha kolay kurulum vb. Sunar. Ücretsiz değil (veya açık kaynak).

http://studios.thoughtworks.com/cruise-continuous-integration


1
Bir CI sistemi olarak kurmak söz konusu olduğunda Cruise'a birkaç kez baktım. örneğin CC.NET'ten çok daha basit değil. Akışları oluşturma ve dağıtmada güçlü yanları var ama bir CI aracı olarak TeamCity çok daha yetkin
haqwin

Cruise / Go için ödeme yapacaksanız, TeamCity'yi ücretsiz olarak da edinebilirsiniz.
Niall Connaughton

0

Teamcity'yi son 1,5 yıldır kullanıyorum ve harika bir deneyim yaşıyorum. Bir dizi .Net ve Java projesini entegre ettim ve MSBuild, Maven vb. Gibi araçlar kullandım. Teamcity'yi kurmak ve çalışmak için oldukça basit buldum. Bazı sql projeleri için de CI çalıştırmayı başardım ki bu, diğer CI araçlarıyla daha kötü olabilecek bir kabustu.
Yakın zamanda acısız olan Teamcity 8.0.6'ya yükseltildi. Ayrıca Teamcity, bazı senaryolar için çok faydalı olan bir REST API sağlar . Derlemeleri otomatikleştirmek için powershell kullanıyorsanız, GitHub'da bir dizi Psake / Teamcity entegrasyon komut dosyası mevcuttur

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.