2008-11-14 15 views
5

Kilka razy w mojej karierze pracowałem w grupie oprogramowania, który ustalił, że

a) Potrzebowaliśmy systemu build/test
b) powinniśmy napisać własną
c) My programista może spędzić tydzień, zrobić to i nie powinien tego ponownie dotykać.Język Agnostic Budowanie systemu zarządzania

Za każdym razem powoduje to system, który wydaje się działać tylko dla osoby, która go napisała i wymaga stałej uwagi . Spędziłem czas przy kilku okazjach, szukając narzędzia, które mógłbym wykorzystać, by służyło naszym potrzebom, ale pojawiało się z pustymi rękami. Ogólnie rzecz biorąc, narzędzia takie jak ten serwer są bardzo wąskim rynkiem. Znowu potrzebuję czegoś takiego. Czy coś tam jest, czy też piszemy to jeszcze raz?

Oto moje wymagania w kolejności priorytetów (ostatni niektóre są po prostu miło mieć):

  1. Możliwość obsługi wielu kompilacji projektu. Mamy kilka komponentów, które zapewniają rzeczy, których używają inne składniki i używają rzeczy z innych komponentów. Programista powinien mieć możliwość sprawdzenia 1 komponentu i wprowadzania zmian bez konieczności budowania świata. Zależności poza projektem powinny być automatycznie pobierane. Zatem pewien sposób, aby wepchnąć i wyciągnąć zbudowane obiekty na serwer, ma kluczowe znaczenie. Innym aspektem tego jest możliwość ściągnięcia wszystkich zależności do katalogu lokalnego w celu rozwoju na drodze.

  2. Nie przejmuj się tym, jak dokładnie wszystko zostanie zbudowane. Może to zabrzmieć dziwnie, ale nie chcę, aby system kompilacji martwił się o kompilowanie mojego kodu. Istnieją już świetne narzędzia, które robią to dla każdego języka - Ant, CMake itp. Chcę tylko powiedzieć, jak je wywoływać, aby tworzyć rzeczy i na jakie wyniki powinien się zwrócić. W ten sposób Projekt A może być w Javie, Projekt B może być w C++, masz pomysł.

  3. mieć jakiś sposób, aby uruchomić testy na wyjściu

  4. pokazują aktualne wyniki build/badanie na stronie internetowej

  5. Wysłać wyniki

  6. Integracja z RCS (używamy SVN)

+0

myślę, że będą musieli wyjaśnić, dlaczego takie rzeczy jak skrypty i/lub Ant, msbuild itp spadną. Wydaje się również wskazywać, że chcesz przechowywać pliki binarne w kontroli wersji lub przynajmniej na serwerze kompilacji. Dlaczego po prostu nie udostępniać wyników maszyny budującej na stronie ftp - z etykietą/wersją. – Tim

Odpowiedz

1

Adam

zauważyłem mrowiska odpowiedź, a jako Anthiller, muszę powiedzieć, że miał rację. Jedną z rzeczy, które Anthill robi naprawdę dobrze, jest definiowanie zależności między projektami. Wersja open source koncentruje się na Javie, podczas gdy komercyjne narzędzie jest agnostyczne bez względu na nazwę.

Pozwoliłoby to na zdefiniowanie zależności między projektami (lub częściami projektów) w oparciu o kryteria takie jak status (najnowsza pomyślna kompilacja lub najnowsza kompilacja zatwierdzona przez kontrolę jakości lub ...) i/lub numer kompilacji lub oddział. Jest to coś, z czego jesteśmy dumni. W czasie kompilacji artefakty kompilacji są przenoszone między serwerami, a pamięci podręczne są przechowywane w celu uzyskania pomocy w zakresie wydajności i wszystkich dobrych rzeczy.

Jeśli chodzi o inne kryteria:
2) Anthill (podobnie jak większość narzędzi do automatyzacji budowania) będzie uruchamiał istniejące skrypty kompilacji, zazwyczaj bez modyfikacji.
3) Testy (ponownie istniejące technologie) można uruchamiać w czasie budowy lub w stosunku do istniejącej kompilacji.
4) Wyniki są wyświetlane w Internecie (ponownie typowe dla narzędzi automatyzacji kompilacji)
5) E-mail jest łatwy.
6) Mamy ponad tuziny integracji SCM i używamy SVN wewnętrznie, dzięki czemu integracja jest oczywiście jedną z naszych najlepszych .

okrzyki,

Eric

+0

Dzięki Eric - to sprawdzę – AdamC

+0

Po prostu próbowałem rozglądać się po twojej stronie, ale wygląda na to, że nie działa ... Postaram się sprawdzić później. – AdamC

+0

Nasz ISP został zaatakowany wczoraj przez kilka godzin, myślę, że wszystko w tym momencie jest w porządku. – EricMinick

1

Apache Continuum i Atlassian na Bamboo spotka się z # 2-6.

Wykonanie # 1 w sposób nieobowiązujący języka jest nieco trudniejsze.

Maven i Ivy oba działają dla zależności Java.

1

Użyłem Visual Build, który okazał się bardzo przydatnym sposobem powiązania wszystkich tych różnych kompilatorów, testujących biegaczy i innych rzeczy w elastyczny system. Think Windows Scheduler na głównych steriodach. Zasadniczo jest to silnik do wykonywania dużych zadań, z gotowymi zadaniami zawartymi we wszystkich głównych komercyjnych systemach kontroli kodu źródłowego, kompilatorach i tak dalej. Może tworzyć foldery, wysyłać e-maile i wiele innych rzeczy za pomocą dość prostego interfejsu użytkownika.

1

Sprawdziłem, ale nigdy nie użyłem, AntHill. Istnieje wersja open source i commercial version.Myślę, że zrobi to, co chcesz, ale byłoby to pomocne, gdybyś podał więcej wymagań, np. Czy musi zautomatyzować tworzenie nocnych kompilacji, co używasz do kontroli źródła, itp.

W mojej obecnej firmie napisałem mój własny. Sposób w jaki pracuję to dokładnie to, co mówisz; nie ma pojęcia, jak zbudować oprogramowanie. Dajesz mu kilka linii poleceń do uruchomienia (przechowywanych w bazie danych), przechwytuje wartość wyjściową i stdout i stderr, a jeśli wartość wyjścia jest niezerowa, oznacza to, że kompilacja jest zepsuta. Mamy około 8 projektów, które mogą budować i prowadzić testy jednostkowe. Wszystkie rozpoczynają się od wyczyszczenia katalogu i odzyskania źródła z subversion.

0

Polecam, jeśli masz zamiar napisać system testowania, które należy rozważyć użycie Test Anything Protocol. TAP jest używany od ponad 20 lat i jest szeroko stosowany, zwłaszcza w przypadku modułów CPAN. Ogólny format

TAP jest:

1..N 
ok 1 Description # Directive 
# Diagnostic 
.... 
ok 47 Description 
ok 48 Description 
more tests.... 

Na przykład, wyjście pliku testowego może wyglądać następująco:

1..4 
ok 1 - Input file opened 
not ok 2 - First line of the input valid 
ok 3 - Read the rest of the file 
not ok 4 - Summarized correctly # TODO Not written yet 

idź do testanything.org aby uzyskać więcej informacji.

przykłady są kopiowane z http://en.wikipedia.org/wiki/Test_Anything_Protocol

Powiązane problemy