Continuous integration

20.03.2010 @ 00:15:46 by Rafał Kozik | agile iPhone programowanie gamedev

Jedną z rzeczy na które kładziony jest nacisk w zwinnych metodologiach (ang. agile) to ciągła integracja. Pod tą nazwą nie kryje się nic innego jak częste, automatyczne czynności dotyczące projektu, zwykle kompilacja i uruchamianie testów jednostkowych i/lub regresyjnych. Ma to na celu szybkie wykrywanie problemów i ich rozwiązywanie. Ponieważ problemy są wykrywane szybko, powinno dać się je dość łatwo wyeliminować. Dzięki temu w każdym momencie mamy dostęp do sprawnego builda.

Przykładowe zalety takiego podejścia:

  • częste buildy, np. po każdym uaktualnieniu repozytorium
  • uruchamianie testów i zbieranie informacji które zmiany odpowiedzialne są za ich niepowodzenie
  • możliwość kompilacji z różnymi kompilatorami i na różnych platformach

Podczas każdego builda powstają pliki, które możemy chcieć zachować -- nazywane są artefaktami. Mogą to być logi, wyniki testów, pliki wykonywalne, informacje o użytych plikach itp. Pozwala to na jeszcze lepsze śledzenie zmian w projekcie i znajdowanie problemów.

Najważniejszą rzeczą w całej idei continuous integration jest automatyzacja. Możemy kupić potężny komputer za kilka tysięcy, który będzie to wszystko robił i można znacząco zmniejszyć obciążenie członków zespołu. To inwestycja, która na pewno zwróci się bardzo szybko.

Tyle w teorii -- a jak to wygląda w praktyce? Na licencji MIT dostępny jest Hudson. Jego konfiguracja jest bardzo prosta i współpracuje chyba z każdym popularnym systemem kontrolii wersji ;) Sam używam go na komputerze Mac Mini do kompilacji 3 projektów -- frameworka i aplikacji, które go używają. Jak wiadomo, aplikacje pod iPhoneOS można niestety kompilować tylko pod systemem Mac OS X. Dzięki takiemu rozwiązaniu w kilkadziesiąt sekund od aktualizacji repozytorium mam przygotowanego zipa ze skompilowaną aplikacją, którą mogę pobrać w każdym miejscu na świecie przez przeglądarkę i zainstalować przez iTunes pod Windows. Ma to ogromne znaczenie w zespołach, które mają dostęp tylko do jednego komputera Mac.




Komentowanie zostało tymczasowo wyłączone.