2009-07-28 16 views
5

Zostałem oskarżony o skonfigurowanie serwera CI w mojej firmie i szukam porady co do konfiguracji kompilacji potrzebnych do moich projektów. Jako pierwszy krok i utworzyły kompilacje jako:Ciągła integracja Kompilacja kompilacji

Commit Build: Kompiluje kod i uruchamia urządzenie testuje
Integration Build: Kompiluje kod i uruchamia długo uruchamiania testów integracyjnych

jestem pewien, co jeszcze musiałby uzupełnić obraz CI. Na przykład Jakie konfiguracje kompilacji masz w swoim sklepie?

Wiem, że musi istnieć pewien krok do wdrożenia moich udanych kompilacji, ale czy powinienem wdrożyć część Integracji?

Korzystanie TeamCity, MSBsuild i SVN

Patrząc na wiele potrzebnych porad.

Odpowiedz

2

Rzeczy, które uruchamiamy w poprzednim projekcie na każdej z CI, w których Code Coverage Records, publikuje automatycznie generowaną dokumentację i raporty Checkstyle.

To dało nam pewne statystyki dotyczące statystycznej jakości każdego sprawdzania w celu planowania i poprawy naszych nawyków pracy.

1

Musimy budować konfiguracje dla

  • kompilacji + unit testy + analizy statycznej (findbugs w naszym przypadku) + pokrycie kodu (wyzwalane na commit)
  • testy integracyjne (uruchamiane zgodnie z harmonogramem, o ile nie jest zmian)
  • instalację do testu (uruchamiany ręcznie)

konfiguracja umożliwia rozmieszczenie nietechnicznym zasobów QA wdrożyć w środowisku testowym, kiedy tylko jest są gotowi przetestować coś i uniknąć pomyłki, czy poprawka błędów trafiła do środowiska testowego.

6

Najbardziej kompletna kompilacja, jaką kiedykolwiek widziałem, wykonała następujące czynności w podanej kolejności. Istnieją dwie grupy, wszystkie cele w każdej grupie są wykonywane niezależnie od niepowodzenia, ale grupa nie działa, jeśli członek grupy zawodzi. Widzimy więc WSZYSTKIE problemy.

Pierwsza grupa pracuje nad źródeł:

  • katalog czysta praca
  • aktualizacja do najnowszych źródeł, dostać wszystko z SVN
  • skompilować źródła, rmic itp
  • zasobów valudate XML (co najmniej w Javie było dużo, jak deskryptory wdrażania, arkusze stylów itp.)
  • do analizy kodów statycznych dostępnych dla źródeł, np. sprawdzanie białych znaków, nazewnictwa konwencji kodowania, nazw plików lub bardziej wyrafinowanych kontroli przeprowadzanych na AST źródła (np. PMD czy to dla Javy).
  • sprawdź konwencje nazewnictwa innych plików, np. sprawdziliśmy nazwy wszystkich bibliotek zależnych, aby zawierały numer wersji.

Druga grupa pracuje nad wytwarzanego kodu, tylko jeśli pierwszy krok udało:

  • uruchomić urządzenie testuje testy
  • prowadzony szybka integracja
  • zrobić statycznej analizy kodu dostępne dla źródeł (większość narzędzi dla Javy robi to w ten sposób), np sprawdzanie typowych wzorców błędów (takich jak Findbugs robi to dla Java)
  • sprawdzanie referencji, np. egzekwować warstwowanie architektury, dodatek użytkowania niektórych klas z innych klas itp
  • stworzenie pełnego pakietu wdrażania

Jest to główny build, który jest uruchamiany raz po raz do zobowiązuje. Zrobiło się bardzo dużo, ale w przypadku pewnej potężnej maszyny wykorzystującej kilka rdzeni, było to około 4 minuty dla 500 kB LOC. Testerzy mogą uzyskać najnowsze kompilacje snapshotów, jeśli zechcą.

testy integracyjne Długi biegania (2 godziny każda) będzie prowadzony raz na dobę i tylko zrobić

  • skompilować
  • run długie testy biegania

Kolejny build był czysto documantion build, wyzwalane raz na noc. To nigdy nie zawiedzie.

  • tworzyć dokumentację API
  • zrobić pełną statycznej analizy kodu ze wszystkimi zasadami i wytwarzają pewien rodzaj wskaźnika dla ogólnej jakości projektu
  • raporty pokrycia produktu (szkoda, że ​​nie egzekwować zasięg rośnie) od wszystkich projektów zbudowanych przed
  • produkujących wszelkiego rodzaju fantazyjne dokumentacji, takich jak strona Maven lub Sonar report itp. To jest dla zarządzania/kontroli jakości przez większość czasu.
1

Mieliśmy podobną rozmowę w najnowszym CITCON Ameryce Północnej (Continuous Integration i konferencji Testing), gdzie wszyscy dzieliliśmy się doświadczeniami i próbuje umieścić razem mapę drogową z prostego CI bardzo zbudowany z CI i systemy zwolnić .

Oryginalne notatki konferencyjne to here. Wraz z Flickr photostream. A cleaned up version jest również dostępny na blogu urbancode.

Australijczycy powrócił wątek na CITCON Brisbane i pencast tego jest dostępny

Nadzieja niektóre z tych środków są użyteczne.

1

Pracuję nad tym w tej chwili. Nasza konfiguracja build wykonuje następujące operacje:

Budowa:

  • skompilować.
  • Test.
  • Scalanie różnych konkretnych wartości konfiguracji środowiska z konfiguracji podstawowej (ta pozostawia nam Staging.config, Test.config etc)
  • Utwórz plik o nazwie version.txt że listy budować razy, numery wersji itp
  • Publish wszystko to do czystego katalogu. To jest następnie zbierane jako artefakt build przez teamcity.

Teraz mamy aplikację, która może zostać opublikowany na dowolnym serwerze po prostu kopiując go do katalogu rozmieszczania i zmiany nazwy odpowiedniego pliku konfiguracyjnego web.config

Mamy wówczas jeszcze 3 konfiguracje dla wdrożenia. Pierwszy zostanie wdrożony w środowisku programistycznym po każdej udanej kompilacji. To daje nam działającą wersję najnowszego codebase przez cały czas. Drugi zostanie wdrożony do przemieszczania ręcznie. To jest ustawione do wdrożenia z ostatniej przypiętej kompilacji programistycznej. Na koniec jest konfiguracja instalacji na żywo, a następnie wdrażana z ostatniej wdrożonej wersji pomostowej. To ma wiele dodatkowych rzeczy:

  • Tag wydana wersja
  • utworzyć archiwum on umieścić go w katalogu dla oszczędzania utrzymanie
  • Przejdź przez wszystkie CheckIN komentarzy od ostatniej kompilacji na żywo oraz ekstraktu te z numerami biletów. Następnie użyj tytułów biletów, aby wygenerować wstępną listę zmian. To jest edytowane przez PM przed zapisaniem dla potomności.
Powiązane problemy