Continuous Integration
Click here to load reader
-
Upload
marcin-daczkowski -
Category
Technology
-
view
677 -
download
1
description
Transcript of Continuous Integration
Continuous Integration
Marcin DaczkowskiAIS.PL
Jeśli się czegoś boisz, rób to tak często jak tylko możliwe
Definicja Zalety Schemat działania procesu Składowe procesu Najlepsze praktyki Cruise Control.NET (Demo)
Agenda
Podejście do wytwarzania oprogramowania oparte o ◦ częstą integrację prac członków zespołu◦ automatyzację całego procesu
Cel: ◦ Minimalizacja ilości błędów◦ skrócenie czasu ich wykrycia
Ojcowie CI:◦ Martin Fowler ◦ Kent Beck
Definicja
Oszczędność czasu◦ Kod 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
Zalety CI
„Prehistoryczne” (?) podejście◦ Schemat wytwarzania oprogramowania:
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 rozgałęziania(ang. branching)◦ Niezbędne ale samodzielnie
niewystarczające dla realizacji idei CI
Bonus: Rys historyczny
Metodologie Agile ◦ Bą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ść
Bonus: Agile Development
(Scrum, XP)
Programista
pobiera kod do prywat
nej przestr
zeni
Programista zapisuj
e zmiany
w repozytorium
Serwer CI buduj
e syste
m
Serwer CI uruchamia testy
Schemat działania procesu
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
Schemat działania procesu (c.d.)
Repozytoria kodu z wersjonowaniem
Wyzwalacze budowania
Automatyczne budowanie
Składowe procesu
(CVS, SVN, Perforce, SourceSafe)
(po zmianach, zaplanowany, ręczny)
(MSBuild, NMaven, Visual Studio)
Testy ◦ Jednostkowe◦ Acceptance Testing
Analiza kodu◦ Przegląd jakości kodu◦ Metryki
Archiwizacja wydań Automatyczna instalacja
Składowe procesu (c.d.)
(NUnit, VS Tests)
(FitNesse, Watir)
(FxCop, VS Code Analysis, StyleCop)
(Ndepend)
(WiX)
(FTP, WebDav)
Wytwarzanie artefaktów◦ Dokumentacja◦ Raporty
Powiadomienia
Składowe procesu (c.d.)
(Mail, IM, Tray)
(Testy: Wyniki, Czasy, Pokrycie; metryki i statystyki kodu )
(DocProject, NDoc)
Jedno repozytorium kodu Częsta synchronizacja kodu Szybki proces budowania Automatyczna instalacja Automatyczne wytwarzanie artefaktów
Najlepsze praktyki
DEMOCruiseControl.NET
Pytania?
http://www.martinfowler.com/articles/continuousIntegration.html
http://ccnet.thoughtworks.com http://www.jetbrains.com/teamcity/ http://www.extremeprogramming.org/rules/i
ntegrateoften.html
Zasoby