1 / 33

Innowacyjne metody monitorowania projektów informatycznych: Część 3: Ciągła integracja

Innowacyjne metody monitorowania projektów informatycznych: Część 3: Ciągła integracja. Bartosz Walter , Marcin Werla {Bartek.Walter,Marcin.Werla}@man.poznan.pl.

morse
Download Presentation

Innowacyjne metody monitorowania projektów informatycznych: Część 3: Ciągła integracja

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Innowacyjne metody monitorowania projektów informatycznych:Część 3: Ciągła integracja Bartosz Walter, Marcin Werla {Bartek.Walter,Marcin.Werla}@man.poznan.pl Szkolenie finansowane ze środków Europejskiego Funduszu Społecznego (75%) i budżetu państwa (25%) w ramach Zintegrowanego Programu Operacyjnego Rozwoju Regionalnego

  2. Ciągła integracja – w teorii „…a common story of software projects: integration is a long and unpredictable process.”

  3. Ciągła integracja – w teorii „But this needn't be the way.” – Martin Fowler (MF)„Continuous Integration” http://www.martinfowler.com/articles/continuousIntegration.html

  4. Ciągła integracja – w teorii Pełna integracja: • Pełna rekompilacja całego kodu źródłowego • Stworzenie uruchamialnej postaci systemu i uruchomienie go w środowisku testowym • Uruchomienie wszystkich testów automatycznych Wszystkie kroki muszą zakończyć się sukcesem.

  5. Ciągła integracja – w teorii Przykładowy scenariusz • Pobranie aktualnego kodu źródłowego z VCS • Wprowadzenie zmian w kodzie • Integracja na maszynie programisty • Synchronizacja kodu z VCS • Integracja na maszynie programisty • Przesłanie zmodyfikowanego kodu na serwer VCS • Automatyczna integracja na serwerze ciągłej integracji

  6. Ciągła integracja – w teorii Zalety • Zmniejsza ryzyko wystąpienia problemów integracyjnych • Brak odrębnych sesji integracyjnych • Zmniejszenie liczby błędów wykrywanych dopiero na etapie integracji • Poprawa pracy zespołowej Ciągła integracja to jedna z podstawowych praktyk Extreme Programming.

  7. Ciągła integracja – w teorii Zalecane praktyki • Pojedyncze repozytorium kodu źródłowego – „…you should be able to walk up to the project with a virgin machine, do a checkout, and be able to fully build the system.” – MF

  8. Ciągła integracja – w teorii Zalecane praktyki • Zautomatyzowane skrypty integracyjne – „…anyone should be able to bring in a virgin machine, check the sources out of the repository, issue a single command, and have a running system on their machine.” – MF

  9. Ciągła integracja – w teorii Zalecane praktyki • Zautomatyzowane testy – „Imperfect tests, run frequently, are much better than perfect tests that are never written at all.” – MF

  10. Ciągła integracja – w teorii Zalecane praktyki • Częste przesyłanie zmian na serwer VCS – „The more frequently you commit, the less places you have to look for conflict errors, and the more rapidly you fix conflicts.” – MF

  11. Ciągła integracja – w teorii Zalecane praktyki • Każda zmiana powoduje wykonanie integracji„The whole point of continuous integration is to find problems as soon as you can. Nightly builds mean that bugs lie undetected for a whole day before anyone discovers them.” – MF „Daily builds are for wimps.” – Kent Beck

  12. Ciągła integracja – w teorii Zalecane praktyki • Integracja powinna być krótkim procesem„Probably the most crucial step is to start working on setting up a staged build. The idea behind a staged build is that there are in fact multiple builds done in sequence.” – MF

  13. Ciągła integracja – w teorii Zalecane praktyki • Testuj w środowisku jak najbardziej zbliżonym do produkcyjnego„If you test in a different environment, every difference results in a risk that what happens under test won't happen in production.” – MF

  14. Ciągła integracja – w teorii Zalecane praktyki • Ostatnia pozytywnie przetestowana postać binarna powinna być łatwo dostępna„We've found that it's very hard to specify what you want in advance and be correct; people find it much easier to see something that's not quite right and say how it needs to be changed.” – MF

  15. Ciągła integracja – w teorii Zalecane praktyki • Informacje o statusie integracji powinny być łatwo dostępne„Continuous Integration is all about communication, so you want to ensure that everyone can easily see the state of the system and the changes that have been made to it.” – MF

  16. Ciągła integracja – w teorii „Bubble, Bubble, Build's In Trouble” http://www.pragmaticautomation.com/cgi-bin/pragauto.cgi/Monitor/Devices/BubbleBubbleBuildsInTrouble.rdoc

  17. Ciągła integracja – w teorii „Bread as a display device” http://www.theregister.co.uk/2001/06/04/bread_as_a_display_device/ „…recently I saw someone experimenting with a dancing rabbit…” – MF

  18. Ciągła integracja – w praktyce Serwer testowy Typowa architektura: Serwer VCS Programista Serwer informacyjny Serwer integracyjny

  19. Ciągła integracja – w praktyce Serwery VCS: • CVS • Subversion • Perforce • … http://better-scm.berlios.de/comparison/comparison.html

  20. Ciągła integracja – w praktyce Narzędzia do automatyzacji: • Make • Ant, NAnt • Maven • Ivy • … http://java-source.net/open-source/build-systems

  21. Ciągła integracja – w praktyce Narzędzia do testów: • xUnit • The Grinder • JMeter • Marathon • … http://java-source.net/open-source/testing-tools http://java-source.net/open-source/web-testing-tools

  22. Ciągła integracja – w praktyce Narzędzia do ciągłej integracji: • CruiseControl • DamageControl • LuntBuild • Continuum • … http://damagecontrol.codehaus.org/Continuous+Integration+Server+Feature+Matrix

  23. Ciągła integracja – w praktyce Pełna integracja (Maven): • Pełna rekompilacja całego kodu źródłowego (clean, compile) • Stworzenie uruchamialnej postaci systemu i uruchomienie go w środowisku testowym (test, build, install, …1) • Uruchomienie wszystkich testów automatycznych (…2) Np.: 1 Stworzenie pliku WAR, uruchomienie go na testowym serwerze aplikacji 2 Uruchomienie testów akceptacyjnych/integracyjnych napisanych przy pomocy JWebUnit, …

  24. Ciągła integracja – w praktyce CruiseControl • Darmowy, open-source • Wersje dla Javy i .NET • Składa się z dwóch aplikacji • - Serwera integracyjnego • - Aplikacji WWW do udostępniania wyników integracji • Działa z wieloma systemami VCS • Rozbudowane możliwości konfiguracji

  25. Ciągła integracja – w praktyce CruiseControl – serwer integracyjny • Jedna instalacja obsługuje wiele projektów • Każdy projekt może mieć zdefiniowane kilka różnych integracji • Dwie podstawowe możliwości konfigurowania okresu integracji

  26. Ciągła integracja – w praktyce CruiseControl – serwer integracyjny • Możliwość „opublikowania” wyników integracji na wiele różnych sposobów • Możliwość zarządzania poprzez interfejs JMX • Możliwość rozszerzania funkcjonalności własnymi pluginami • Konfiguracja poprzez plik XMLhttp://cruisecontrol.sourceforge.net/main/configxml.html

  27. Ciągła integracja – w praktyce <cruisecontrol> <property/> <system> <configuration> <threads/> </configuration> </system> <plugin/> <project> … </project> … </cruisecontrol>

  28. Ciągła integracja – w praktyce <project> <property/> <plugin/> <dateformat/> <labelincrementer/> <listeners>... (4) …</listeners> <bootstrappers>… (16) …</bootstrappers> <modificationset>… (24) …</modificationset> <schedule>… (6) …</schedule> <log> <merge/> <gzip/> <delete/> </log> <publishers>… (24) …</publishers> </project>

  29. Ciągła integracja – w praktyce CruiseControl – aplikacja WWW • Jedna instalacja obsługuje wiele projektów • Wyświetlane strony są generowane na podstawie logów części integracyjnej CC • Możliwy jest dostęp do pełnej historii integracji i artefaktów z integracji

  30. Ciągła integracja – w praktyce CruiseControl – wady/zalety • [+] Dojrzały (czyt. stabilny i przemyślany) • [+] Bardzo elastyczny • [+/–] Osobne aplikacje do integracji i prezentacji wyników • [–] Ograniczone możliwości interfejsu WWW

  31. Ciągła integracja Podsumowanie • Ciągła integracja to jedna z praktyk XP i jest ściśle powiązana jest z innymi praktykami • Pełne wdrożenie CI wymaga sporego nakładu pracy, ale… warto to zrobić • Nawet „integracja” polegająca na rekompilacji kodu już coś daje • Istnieje wiele narzędzi umożliwiających i ułatwiających zautomatyzowaną ciągłą integrację • Dobrym narzędziem na początek jest CruiseControl

  32. Ciągła integracja Pytania?

  33. Ciągła integracja Dziękuję za uwagę!

More Related