CruiseControl [.Net] czy TeamCity do ciągłej integracji?

117

Chciałbym zapytać, które zautomatyzowane środowisko kompilacji uważasz za lepsze na podstawie praktycznego doświadczenia. Planuję stworzyć trochę .Net i trochę Java, więc chciałbym mieć narzędzie, które obsługuje obie te platformy.

Czytałem i dowiedziałem się o CruiseControl.NET , używanym w programowaniu stackoverflow i TeamCity z jego obsługą agentów kompilacji na różnych platformach OS i opartych na różnych językach programowania. Jeśli więc masz praktyczne doświadczenie w obu tych przypadkach, który wolisz i dlaczego?

Obecnie najbardziej interesuje mnie łatwość obsługi i zarządzania narzędziem, a jeszcze mniej fakt, że CC jest open source, a TC jest przedmiotem licencji w pewnym momencie, gdy masz wiele projektów do uruchomienia (ponieważ ja potrzebuję go do niewielkiej liczby projektów).

Ponadto, jeśli istnieje inne narzędzie, które spełnia powyższe wymagania i uważasz, że warto je polecić - nie wahaj się włączyć go do dyskusji.

zappan
źródło

Odpowiedzi:

111

Pracowałem nad narzędziami Continuous Integration od czasu tego, który stworzył Cruise Control (wersja java). W pewnym momencie wypróbowałem prawie wszystkie z nich. Nigdy nie byłem szczęśliwszy niż z TeamCity. Jest bardzo prosty w konfiguracji i nadal zapewnia dużą moc. Strona ze statystykami kompilacji, która pokazuje czasy kompilacji, liczbę testów jednostkowych, współczynnik pomyślności itp., Jest bardzo ładna. Strona główna projektu TeamCity jest również bardzo cenna. W przypadku prostych projektów .NET wystarczy powiedzieć TeamCity, gdzie znajduje się rozwiązanie i jakie zestawy mają testy i to wszystko, czego potrzebuje (poza lokalizacją kontroli źródła). Użyliśmy również skomplikowanych skryptów MSBuild i zrobiliśmy tworzenie łańcuchów kompilacji. Przeszedłem również przez dwie aktualizacje TeamCity i były one bezbolesne.

CruiseControl.NET również działa dobrze. Konfiguracja jest trudniejsza, ale ma dłuższą historię, więc łatwo jest znaleźć rozwiązania w sieci. Ponieważ CruiseControl.NET jest oprogramowaniem typu open source, masz również możliwość dodawania lub zmiany tego, co chcesz. Korzystałem z CruiseControl.NET od jego wydania i napisałem część wczesnego kodu dla cc.tray (na szczęście przepisany przez kogoś, kto wiedział lepiej).

Rejs, z ThoughtWorks, również wygląda całkiem nieźle, ale nie widzę powodu, dla którego bym się zmienił. Gdybym zaczynał nowy projekt, mógłbym spróbować, ale TeamCity wykonał świetną robotę, upraszczając proste rzeczy, jednocześnie czyniąc złożonym dość bezbolesnym.

Edycja: Właśnie zaktualizowaliśmy TeamCity 5.0 kilka tygodni temu i była to kolejna bezbolesna aktualizacja. Pozwoliło nam to wykorzystać ulepszone możliwości pokrycia kodu i obsługę GIT. Używamy teraz również kompilacji osobistej i wstępnie przetestowanych funkcji zatwierdzania, które są dostępne od jakiegoś czasu. Pomyślałem, że powinienem zaktualizować odpowiedź, aby wskazać, że TeamCity ciągle się poprawia i nadal jest łatwy w użyciu.

Mike Two
źródło
Zastanawiam się, czy z całym swoim doświadczeniem mógłbyś trochę podzielić się screencastem z tworzenia prostego projektu .NET na nim i pracować z TeamCity (używając JING (darmowego screencastingu) lub innego narzędzia) i opublikować link tutaj lub gdzieś, więc ja i każdy z nas borykający się z tym będzie miał dobry startup :) Dziękuję.
balexandre
2
@balexandre - Dokumentacja zespołu miasta jest całkiem niezła. A @ boj's answere dostarczył link do dobrej obsady ekranu tutaj blog.wekeroad.com/kona/kona-2
Mike Two
Zawsze bałem się CI ze względu na wizerunek CCNet, który miałem, w zeszłym tygodniu wypróbowałem TeamCity 6.5 i była to absolutna radość. nie dotknął ani jednego pliku xml / konfiguracyjnego.
kay.one
1
Jeśli obecnie korzystasz z CC.Net i chcesz przenieść się do Team City, czy jest to bolesne? W jaki sposób TC tworzy pliki MSI?
Wes
@Wes, nie wiem, czy to nadal jest dla Ciebie istotne, ale mamy ponad 20 projektów uruchomionych w CC.Net, ale ostatnio wdrożyłem TeamCity dla niektórych projektów na Androida, które mamy. Zdecydowanie największym bólem była nauka Ant, ale to coś, co musiałbym zrobić, gdybym umieścił projekty w CC.Net. Z radością przeniósłbym wszystkie nasze projekty do TeamCity, gdybym mógł przekonać kierownictwo do zapłacenia za dodatkowe konfiguracje kompilacji, których potrzebowalibyśmy (do pewnego momentu za darmo), głównie ze względu na konfigurację, która jest błahostką w TeamCity i grzęzawiskiem XML w CC. Netto.
johnc
33

Byłem / jestem wielkim fanem CC.NET. Obecnie mamy 5 projektów w CruiseControl i działa świetnie. Pisanie plików konfiguracyjnych ręką może być bolesne, ale jest w porządku.

Ale .

Po screencastie Kona: Continuous Integration and Better Unit Testing (pierwsza 1/3 o TeamCity) sprawdzę również TeamCity. Uwielbiam zintegrowany pulpit testowy i interfejs konfiguracyjny.

Myślę, że każdy powinien obejrzeć ten film przed wyborem CC.NET lub TeamCity.

ps: Mam nadzieję, że w sieci jest również wartościowy film CC.NET.

boj
źródło
15

Zdecydowanie moim ulubionym serwerem CI jest Hudson. Łatwe w konfiguracji i utrzymaniu, wiele ładnych wykresów pokazujących trendy programistom i osobom niebędącym programistami oraz bezpłatne.

Obecnie używam TeamCity w projekcie i generalnie jestem z niego zadowolony, ale wiele z generowanych przez niego wykresów nie jest szczególnie przydatnych, a konfiguracja jest bardziej skomplikowana niż Hudson.

To powiedziawszy, TeamCity jest potężny, darmowy do wielu zastosowań i ma jedną zabójczą funkcję: Remote Run. Możesz "wstępnie zatwierdzić" swoje zgłoszenie bezpośrednio z IDEA lub Eclipse, uruchomić jedną lub więcej konfiguracji kompilacji na serwerze TeamCity i zatwierdzić zmiany tylko wtedy, gdy kompilacja się powiedzie (np. Kompilacja i wszystkie testy zakończą się pomyślnie).

Biorąc pod uwagę, że możesz uruchomić i uruchomić zarówno TeamCity, jak i Hudson w ciągu kilku godzin, warto chwycić oba i uruchomić je obok siebie, wraz z innymi (takimi jak CruiseControl), o których możesz pomyśleć. Jeśli nie możesz szybko znieść serwera CI, aby przeprowadzić bezpośrednie porównanie, to przynajmniej masz punkt danych ułatwiający instalację i / lub konfigurację.

Gene Gotimer
źródło
6
+1 dla Hudsona. Zobacz też: używanie Hudson jako narzędzia do budowania platformy .NET: stackoverflow.com/questions/616149/… ; CruiseControl vs Hudson: stackoverflow.com/questions/604385/…
Jonik
12

Używałem ich z powodzeniem w różnych projektach. Z punktu widzenia konfiguracji i administracji Team City jest znacznie łatwiejszy w obsłudze. Nie musisz siekać z plikami .config, tak jak robisz to z CC, a konfiguracja jest prosta. Ponieważ nie masz wielu projektów, polecałbym Team City zamiast CC, dopóki nie dojdziesz do punktu, w którym Team City kosztuje $.

Programista SaaS
źródło
12

Używałem zarówno CC.net, jak i TeamCity. Mam za zadanie skonfigurować i zainstalować TeamCity dla mojej organizacji (5 programistów). Nasza organizacja korzysta z nietypowych praktyk i narzędzi (przynajmniej w przypadku organizacji naszej wielkości), takich jak Perforce do kontroli źródła i wielu agentów kompilacji działających w heterogenicznych systemach operacyjnych, co powodowało pewne problemy z początkową konfiguracją. Jednak wsparcie za pośrednictwem poczty elektronicznej było absolutnie na najwyższym poziomie, jeśli chodzi o konfigurację wszystkiego. Odpowiedzi na moje głupie pytania otrzymałem dosłownie w kilka minut.

Interfejs jest intuicyjny i responsywny, a także pełen funkcji. Produkt wydaje się bardzo drogi. Konfiguracja jest łatwa, a interfejs sieciowy jest wystarczająco inteligentny, aby aktualizować się bez ponownego uruchamiania agenta lub usług serwera, a nawet odświeżania strony.

Wydaje mi się, że używamy prawie każdej zaawansowanej funkcji produktu i jak dotąd nie znaleźliśmy żadnych błędów. Integracja Ndepend, zagnieżdżone skrypty NAnt, etykietowanie wersji Perforce, nazwij to, robimy to.

Bardzo polecam TeamCity każdemu, kto szuka serwera ciągłej integracji lub dowolnego serwera kompilacji.

user28669
źródło
Perforce jest narzędziem Uncommen? Perforce jest fantastyczny dla zespołów dowolnej wielkości. Sam go używam do rozwoju domu :)
sonstabo
@sonstabo, zgodziłbym się z tym, że większość małych firm korzysta z SVN lub GIT, a Perforce jest najczęściej używany w większych firmach. Używałem Perforce i podobało mi się, ale byłem w firmie deweloperskiej 1000, kiedy go używałem.
Samuel Neff
3

Bez chęci rzucania w Ciebie alternatywnymi narzędziami :-)

Hudson to świetna alternatywa open source, używałem CC i CC.net i przyznaję, że uważam to za fantastyczne narzędzia. Zastanawiam się nad przejściem na Hudson, ponieważ wydaje mi się, że jest dużo łatwiejszy w konfiguracji i utrzymaniu.

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

Scott James
źródło
1
+1 Ponieważ nikt nie myśli o Hudsonie dla .Net CI. Użyłem Cruise Control, Team City i Bamboo i stwierdziłem, że Hudson jest najlepszym narzędziem do pracy w większości przypadków, w których budżet jest dużym problemem.
Dan Rigby
3

Upewnij się, że system, który zdecydujesz się skalować do liczby projektów, które będziesz potrzebować do obsługi ...

Używam CruiseControl.Net, ale nie polecałbym go do tworzenia wielu projektów ... Mam (być może trochę dziwne) ustawienie, w którym mam wiele bibliotek statycznych C ++, które komponuję w aplikacje. Każda biblioteka zależy od innych bibliotek, a aplikacje pobierają zestaw bibliotek i kompilacji. Każda biblioteka ma zestaw testów. Każda aplikacja ma zestaw testów. Tworzę dla 5 kompilatorów i odmian platform (Windows).

Pierwszą rzeczą, jaką odkryłem, było to, że wyzwalacze projektu CC.Net nie są tak naprawdę tym, czego potrzebujesz, a multi-wyzwalacz nie działa dobrze z wyzwalaczami projektu. Sposób działania wyzwalaczy projektu (wykorzystują zdalne połączenie do połączenia z serwerem, na którym przechowywany jest projekt (nawet jeśli jest to projekt zarządzany przez to samo wystąpienie CC.Net), a następnie ściągają wszystkie projekty z tego serwera i przeszukują listę sekwencyjnie szukając projektu, który Cię interesuje ...) oznacza, że ​​nie są one dobrze skalowane. Kiedy przekroczysz pewną liczbę projektów, przekonasz się, że CC.Net zajmuje większość procesora dla twojej maszyny budującej.

Oczywiście jest to oprogramowanie typu open source, więc możesz to naprawić ... I jestem pewien, że jest odpowiedni dla niewielkiej liczby niezależnych projektów.

Aby uzyskać więcej informacji na temat problemów, które miałem, i kilka poprawek dla CC.Net, zobacz tutaj http://www.lenholgate.com/archives/cat_ccnet.html

Len Holgate
źródło
och ... dzięki za tę informację, cenny post. zwłaszcza gdy mówi się, że TC jest prostą konfiguracją, a jej ograniczeniem jest liczba projektów, w których CC & CC.Net może wejść do gry. ale jak mówisz,
pojawiają
Nawet w mojej mocno zhakowanej wersji CC.Net mam problemy, ponieważ CC.Net używa wątków na projekt do planowania i, cóż, to tylko bzdury projekt IMHO.
Len Holgate
2

Niedawno skonfigurowałem cc .net. To świetna aplikacja, ale wymaga trochę cierpliwości. Będziesz dużo edytować pliki konfiguracyjne w notatniku :)

Jest już od jakiegoś czasu, więc jest dobrze obsługiwany i zwykle można znaleźć kogoś, kto zrobił już to, co chcesz. Interfejs sieciowy to również .net, co było dla nas plusem, ponieważ jesteśmy sklepem Microsoft.

Nie korzystałem z TeamCity, ale słyszałem o nim sporo rekomendacji i wygląda ładnie.

alexmac
źródło
2

Miałem doświadczenie w konfigurowaniu i uruchamianiu CruiseControl (wersja Java) na Linuksie w mojej poprzedniej firmie. Jak sugeruje większość ludzi, konfiguracja nie jest najprostsza. Musisz zrozumieć jego strukturę, aby wymyślić działającą / zarządzalną konfigurację. Jednak kiedy już minąłeś ten garb, czuję, że CruiseControl jest dość elastyczny, aby pozwolić ci robić różne rzeczy, pasujące do różnych scenariuszy.

Poza tym dokumentacja CruiseControl, jej strona wiki również zawiera przydatne informacje.

Nie mam bezpośredniego doświadczenia z TeamCity. Chociaż funkcja zatwierdzania przed testem wygląda wystarczająco interesująco.

Innym narzędziem CC, które możesz nadać mu wygląd, jest Bamboo firmy Atlassian. Jest dużo łatwiejszy w konfiguracji, a interfejs jest ładniejszy. Chociaż nie jest tak elastyczny, jak to, co oferuje CruiseControl.

ejel
źródło
1

Trzecia opcja, którą warto rozważyć: Rejs Myśli. Jest zbudowany na CruiseControl, ale oferuje dużo więcej funkcji, łatwiejszą konfigurację itp. Nie jest darmowy (lub open source).

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

Smerf
źródło
1
Zaglądałem do Cruise kilka razy, jeśli chodzi o konfigurację jako system CI. nie jest dużo prostsze niż na przykład CC.NET. Ma swoje mocne strony w tworzeniu i wdrażaniu przepływów, ale jako narzędzie CI, TeamCity jest o wiele bardziej kompetentny
haqwin
Jeśli zamierzasz zapłacić za Cruise / Go, równie dobrze możesz otrzymać TeamCity za darmo.
Niall Connaughton
0

Używam Teamcity od 1,5 roku i mam wspaniałe doświadczenie. Zintegrowałem wiele projektów .Net i Java oraz korzystałem z narzędzi takich jak MSBuild, Maven itp. Uważam, że Teamcity jest całkiem proste w konfiguracji i pracy. Udało mi się uruchomić CI również w niektórych projektach sql, co było trochę koszmarem, który mógłby być gorszy w przypadku innych narzędzi CI.
Niedawno zaktualizowany do Teamcity 8.0.6, który był bezbolesny. Teamcity zapewnia również REST API, które jest bardzo przydatne w niektórych scenariuszach. Jeśli używasz PowerShell do automatyzacji kompilacji, wiele skryptów integracji Psake / Teamcity jest dostępnych na GitHub

Mohammad Nadeem
źródło