1 Continuous IntegrationMarcin Daczkowski AIS.PL
2 Jeśli się czegoś boisz, rób to tak często jak tylko możliwe
3 Agenda Wprowadzenie Agile Development Składowe Jak wdrożyć? DemoCo to jest? Do czego służy? Jakie problemy rozwiązuje? Agile Development Składowe Jak wdrożyć? Demo
4 Wprowadzenie - DefinicjaSposób wytwarzania oprogramowania bazujący na: częstej integracji prac członków zespołu automatycznej jej weryfikacji Cel: Minimalizacja błędów integracji skrócenie czasu ich wykrycia Ojcowie CI: Martin Fowler Kent Beck
5 Wprowadzenie - Zalety Oszczędność czasuKod bazowy zawsze działa Brak lub ograniczona faza finalnej integracji Szybkie zgłaszanie błędów Automatyzacja tworzenia wydań Zwiększona zaufanie programistów Kod bazowy zawsze się buduje Ciągłe testy poprawności Redukcja ryzyka i kosztów
6 Rys historyczny „Prehistoryczyne” (?) podejścieSchemat wytwarzania oprogramownia: Rozdziel zadania do pracy współbieżnej Integruj w końcowym etapie życia projektu Wysokie ryzyko porażki projektu SCM (ang. Source Code Management) Jedno repozytorium kodu Częściowa integracja podczas wgrywania zmian Techniki rozgłęziania(ang. branching) Samodzielnie niewystarczający dla realizacji idei CI
7 Najlepsze praktyki Pojedyncze repozytorium koduAutomatyzacja procesu budowania Automatyzacja testowania Środowisko pre-produkcyjne Częste integrowanie kodu w repozytorium Szybki proces budowania projektu Automatyzacja procesu wdrożenia
8 Schemat działania Programista pobiera kod do prywatnej przestrzeniProgramista zapisuje zmiany w repozytorium Serwer CI buduje system Serwer CI uruchamia testy
9 Schemat działania (c.d.)Integracja zakończona sukcesem Serwer CI archiwizuje kod źródłowy Serwer CI wytwarza artefakty Serwer CI informuje programistów o sukcesie Integracja zakończona porażką Serwer CI informuje programistów o sytuacji wyjątkowej Programista zgłasza się na ochotnika Programista zapisuje poprawki w repozytorium
10 Agile Development Metodologie Agile eXtreme ProgrammingBądź zwinny bo wymagania ulegną zmianie Bądź elastyczny i używaj tylko tego co potrzebne eXtreme Programming Testy najpierw Programowanie w parach Częsta integracja Częste wydania Integracja sekwencyjna Zbiorowa odpowiedzialność (Scrum, XP)
11 Składniki Serwera CI Automatyczne budowanieRepozytoria kodu z wersjonowaniem Wyzwalacze budowania (MSBuild, NMaven, Visual Studio) (CVS, SVN, Perforce, SourceSafe) (po zmianach, zaplanowany, ręczny)
12 Składniki CI (c.d.) Testy Analiza kodu Archiwizacja wydańJednostkowe Acceptance Testing Analiza kodu Przegląd jakości kodu Metryki Archiwizacja wydań Automatyczna instalacja (NUnit, VS Tests) (FitNesse, Watir) (FxCop, VS Code Analysis) (NDepend)
13 Składniki CI (c.d.) Wytwarzanie artefaktów Powiadomienia DokumentacjaRaporty Powiadomienia (DocProject, NDoc) (Testy: Wyniki, Czasy, Pokrycie; metryki i statystyki kodu ) (Mail, IM, Tray)
14 Składniki CI (c.d.) Interfejs użytkownika Rozszerzalność AdministracjaDashboard Dostęp do raportów i statystyk Rozszerzalność
15 Jak wdrożyć? Stopniowa migracja starych projektówSzersze wykorzystanie CI w nowych Zależności między projektami Produkty CruiseControl.NET TeamCity
16 DEMO CruiseControl.NET
17 Pytania?
18 Zasoby uousIntegration.html ntegrateoften.html