Winbot – continuous integration

Prace nad moją aplikacją wciąż posuwają się do przodu. Ostatnio myślałem o wszystkich rzeczach, które zamierzam zaimplementować i doszedłem do wniosku, że przydałby mi się proces automatyzujący część pracy. Zacząłem rozglądać się za jakimś prostym narzędziem  continuos integration. Z uwagi na specyfikację Winbot’a, ważne było aby narzędzie umożliwiało:

  • wykrywanie zmiany i pobieranie aktualnych źródeł z repozytorium (Github),
  • ściągnięcie zależności za pomocą Nuget’a,
  • zbudowanie aplikacji WPF (.NET Framework),
  • uruchomienie testów jednostkowych (NUnit),
  • dostarczenie zbudowanej paczki z artefaktami,
  • notyfikacje w przypadku błędu/zbudowania nowej wersji.

Mój wybór padł na TeamCity – proste i elastyczne narzędzie spełniające wszystkie moje wymagania.

Opiszę teraz sposób konfiguracji TeamCity, dzięki któremu każda zmiana w repozytorium wywoła następujące akcje:

  1. ściągnięcie aktualnych źródeł,
  2. dociągnięcie zależności za pomocą Nuget’a,
  3. zbudowanie solucji,
  4. uruchomienie testów jednostkowych i wyświetlenie wyników.

Oczywiście najlepiej byłoby mieć zewnętrzny serwer, na którym działałoby TeamCity. Ja będę musiał zadowolić się lokalnym środowiskiem.

  1. Zaczynamy od ściągnięcia TeamCity ze strony producenta: link
  2. Instalujemy TeamCity (serwer + agent). Pod koniec instalacji wybieramy port, na którym działać będzie nasza instancja (np. 8888)
  3. Po udanej instalacji, wpisując w przeglądarce internetowej odpowiedni adres powinniśmy zobaczyć stronę konfiguracyjną.
  4. Wybieramy bazę danych. Na moje potrzeby w zupełności wystarczy Internal(HSQLDB)
  5. Akceptujemy regulamin
  6. Dodajemy konto administratora
  7. Instalujemy Nuget’a: Administration -> Tools -> Install Tool
  8. Wracamy na stronę główną i tworzymy nowy projekt (Manually)
  9. Ustawiamy odpowiednią nazwę (w moim przypadku Winbot)
  10. Pora na skonfigurowanie połączenia do repozytorium: Project Settings -> VCS Roots -> Create VCS Root
  11. Ustawiamy odpowiednią nazwę, url do repozytorium, login i hasło. Przed zapisem warto zrobić Test connection.
  12. Wracamy do ustawień projektu i tworzymy nową build konfigurację. General Settings -> Create Build Configuration (Manually)
  13. Wprowadzamy odpowiednią nazwę.
  14. Podpinamy stworzony w kroku 11 VCS root
  15. Dodajemy trzy kroki: Nuget Installer, Visual Studio (sln), NUnit. Konfigurujemy je według własnych potrzeb. Powinniśmy uzyskać mniej więcej taki efekt:
  16. Na koniec dodajemy trigger, tak aby nasz proces uruchamiał się przy każdej zmianie w repozytorium. W tym celu idziemy do zakładki Triggers i klikamy Add new trigger. Wybieramy opcję VCS Trigger
  17. Teraz możemy dla testu zmienić coś w naszym repozytorium i sprawdzić czy TeamCity zareaguje. Jeżeli wszystko wykona się prawidłowo, na stronie głównej powinniśmy zobaczyć coś w tym stylu:

To wszystko. Jest to co prawda bardzo prosta konfiguracja, ale na początek zapewnia nam wszystko czego potrzebujemy. Można teraz pobawić się takimi bajerami jak:

  • notyfikacje o nowym buildzie lub błędzie napotkanym w trakcie budowania solucji,
  • raportowanie pokrycia kodu tastami jednostkowymi,
  • deployment web serwisu (jeżeli nad takim pracujemy),
  • udostępnianie instalatora dla najnowszej wersji aplikacji desktopowej (ja zamierzam coś takiego dodać w przyszłości),
  • itp.

Ale to zostawiam już Wam. Mam nadzieję, że zachęcę Was tym postem do zapoznania się z możliwościami TeamCity i wykorzystania go we własnych projektach.

Jeden komentarz dotyczący “Winbot – continuous integration

Dodaj komentarz

Twój adres email nie będzie opublikowany. Pola wymagane zostały oznaczone *