Serwer ciągłego budowania (cc.net, hudson, bambus itp.) Zdalne budowanie?

9

Obecnie używamy raz serwera cc.net do naszego procesu kompilacji, który buduje zarówno .net (używając msbuild & nant), jak i java (używając maven i ant).

CC.net monitoruje kontrolę źródła i wyzwala zdalną kompilację działającą na osobnym serwerze. CC.net następnie zestawia wyniki.

Kiedy uruchamiamy kompilację zdalną, zazwyczaj:

  • uruchamia nunit lub junit lub podobny przy użyciu fałszywych danych
  • opcjonalnie uruchamia skrypt DB, aby utworzyć nową instancję bazy danych lub przywrócić bazę danych ze znanej pozycji.
  • uruchamia selen lub podobny do testowego interfejsu użytkownika
  • uruchamia emma lub ncover w celu pokrycia kodu
  • buduje system dla różnych środowisk wdrażania (test, akceptacja, produkcja)

Jednocześnie może być uruchomionych kilka wersji, niektóre .net i niektóre Java (z różnych zespołów projektowych).

Uruchomienie zdalnych kompilacji zajmuje dużo czasu, gdy konfigurujemy nowy projekt i uważamy, że musi istnieć coś bardziej odpowiedniego do kompilacji zdalnych niż cc.net.

Czy ktoś ma jakieś doświadczenie ze zdalnymi kompilacjami z systemami ciągłej integracji?
Naprawdę nie chcę list funkcji serwerów CI, byłbym bardziej wdzięczny za informacje o tym, jak wykorzystałeś je w środowisku wielojęzycznym i wieloserwerowym.

Chris Buckett
źródło

Odpowiedzi:

8

Hudson (aktualizacja: w dzisiejszym świecie użyłbym Jenkinsa, widelca Hudsona).

Korzystałem z hudsona w środowiskach korporacyjnych Java i .NET do projektów o wysokiej widoczności (prawdopodobnie byłeś na niektórych stronach). Hudson jest solidny od samego początku, ale najlepsze jest to, że jest wiele wtyczek do robienia wszystkiego, co tylko chcesz. Hudson jest wysoce konfigurowalny, ma świetną społeczność i jest naprawdę łatwy do skonfigurowania w środowisku klastrowym, jeśli potrzebujesz wielu kompilacji jednocześnie. To mój ulubiony serwer CI spośród wszystkich, z których korzystałem (CC.NET, Hudson i TFS).

Ponadto możesz użyć wtyczki ChuckNorris, aby kazał ci kciuki w górę lub w dół.

Ryan Hayes
źródło
1
Hudson jest dobrym wyborem, jeśli nie robisz nic egzotycznego, ale pod koniec dnia, jeśli nie możesz zrobić tego, co próbujesz zrobić za pomocą skryptu wsadowego, Hudson prawdopodobnie nie zrobi tego zbyt dobrze.
Bill
Hudson rozwidlił się na Jenkins i Oracle Hudson. Chcesz udostępnić, którego użyć?
1
@ Thorbjørn: Jestem pro-Jenkins. Jest kilka powodów , ale dla mnie zabójczym jest fakt, że Jenkins zaczyna aktywnie rozwijać się - głównie dlatego, że Kohsuke Kawaguchi, główny facet za Hudsonem, jest w obozie w Jenkins. I wydaje się, że uważa, że Jenkins jest prawdziwą kontynuacją projektu, który rozpoczął . Aha, i wreszcie, Jenkins ma logo, które nie jest clipartem Microsoft!
Tom Anderson
@ Thorbjørn - Zgadzam się z Tomem. Nie używałem Hudsona od około roku (obecnie używam TFS), ale to jest ogólny konsensus, który słyszałem, że Jenkins jest właściwą drogą. Znowu nie korzystałem z nich, odkąd zostały rozwidlone, ale gdybym musiał je ponownie podnieść, prawdopodobnie wybrałbym trasę Jenkinsa.
Ryan Hayes
7

Jakiś czas temu mieliśmy do czynienia z tym pytaniem i zdecydowaliśmy się na TeamCity . Patrzyliśmy tylko na Hudsona, CC i TeamCity. Wybór był prosty - TeamCity ostatecznie stał się naszym serwerem kompilacji. Pamiętaj, że nie jestem profesjonalistą i to było moje pierwsze doświadczenie z serwerami kompilacji w tym czasie.

Hudson - nie miałem pojęcia, co robić i gdzie o tym przeczytać. I chociaż mogłem coś zrozumieć, nie było opcji - zbyt wiele pracy. Postanowiłem spojrzeć na CC.

Tempomat - taki sam jak Hudson, ale w nieco inny sposób. Absolutnie nic nie da się zrozumieć bez instrukcji i mnóstwa pomocy Google. Po prostu rzuciłem okiem na TC.

TeamCity - TeamCity poczuł się jak niebo po pierwszych dwóch. Jest to najbardziej użyteczny z tych trzech. Zainstaluj, przejdź do panelu administracyjnego, skonfiguruj projekt (pokaż, gdzie jest SVN, wskaż kompilację plików, określ zasięg / testy jednostkowe itp.) I zacznij cieszyć się. I chociaż nie mogę powiedzieć, że niczego nie zrobiłem w Google, nadal 95% procesu konfiguracji było bardzo łatwe i jasne. Bardzo polecam to narzędzie. Idź i spójrz na to. Zaoszczędzi Ci to dużo nerwów i czasu :)

Powinienem również zauważyć, że TC nie jest darmowy. Chociaż mają darmową edycję, która może być używana w projektach komercyjnych z pewnymi ograniczeniami (maksymalna konfiguracja kompilacji 20) - spójrz na ich stronę cenową.

PS Wydaje mi się, że pracuję dla TC, ale tak naprawdę nie :)

Jefim
źródło
3

Używamy CC.NET 1.4.

Staramy się uaktualnić do wersji 1.6 ... co za koszmar.

Jest potężny ... ale TYLKO jeśli dobrze go wykorzystasz i zrozumiesz, jak wszystko do siebie pasuje. To jest wiele pytań od całego zespołu. Mamy „buildmasters”, którzy mają dostęp do serwera i mogą zmieniać konfiguracje. Mimo to istnieje wiele Google w odniesieniu do ccnet, a cała firma stała się ogromnym bałaganem.

Osobiście chcę przejść do TeamCity.

Polecam omijać ccnet.

Nikt
źródło
1

dobre pytanie. Obecnie próbujemy również dowiedzieć się, które narzędzie będzie dla nas najlepsze. Będę mógł więc powiedzieć tylko trochę doświadczenia. Bylibyśmy jednak bardzo zainteresowani, który system CI wybrałeś teraz i z jakich powodów. Prosimy więc o informowanie nas.

Jestem pod wielkim wrażeniem, jak wysoki jest twój poziom CI. Muszę przyznać, że mamy mniejsze wymagania, ponieważ nie uruchamiamy jeszcze testów interfejsu użytkownika i nie tworzymy instancji bazy danych ani podobnych, po prostu używamy próbnych testów do naszych testów jednostkowych.

Do naszych dotychczasowych doświadczeń:

W przypadku projektów Java korzystamy z Bamboo, który działa dobrze przy użyciu JUnit i Emma. I nie trzeba wiele wysiłku, aby założyć nowy projekt.

W przypadku projektów .NET wciąż szukamy najlepszego rozwiązania

  • Cruise Control: Nie mogliśmy jeszcze uruchomić go z powodu problemów z połączeniem z naszym repozytorium

  • TFS:

    a) Aby wykonać pierwszą kompilację, należy wykonać kilka kroków konfiguracji.

    b) Istnieją pewne pułapki, w których musisz poradzić sobie z prawami dostępu. Istnieje wiele ról, które możesz zdefiniować i musisz dokładnie wiedzieć, jakie prawa ma proces kompilacji, a które ma Twoje osobiste konto logowania. Ale jeśli masz wystarczająco dużo czasu na zarządzanie, możesz zdefiniować każdą konkretną szczegółowość, jakiej potrzebujesz.

    c) Jeśli chodzi o biblioteki lib, do których się odwołujemy, należy także zarządzać, jeśli chcesz udostępniać biblioteki lib dla wielu projektów i nie chcesz obsługiwać ich przy każdym projekcie

    d) Uruchomienie testu NUnit nie jest tak łatwe, jak myśleliśmy. Jest to łatwe tylko, jeśli korzystasz z wykonania testu dostarczonego przez Visual Studio, ale nie jest to NUnit

    e) Nie próbowaliśmy jeszcze uruchamiać NCover (pierwsze rzeczy :-))

  • Hudson: Następne narzędzie wypróbujemy. Wydaje się, że ma naprawdę dobrą i łatwą wtyczkę do .NET, dam ci znać, jak to działa

  • Bamboo: Pierwsze przewidywania, które otrzymaliśmy: „Zbyt specyficzne dla Java”. Ale może wypróbujemy wtyczkę .NET, jednak dam ci znać

Mam nadzieję, że możemy kontynuować tę dyskusję i wymienić doświadczenia.

Andy


źródło