Continuous Integration

16

Click here to load reader

description

Originally presented on Academic .NET User Group meeting (Faculty of Physics, Astronomy and Informatics, NCU, Torun)

Transcript of Continuous Integration

Page 1: Continuous Integration

Continuous Integration

Marcin DaczkowskiAIS.PL

Page 2: Continuous Integration

Jeśli się czegoś boisz, rób to tak często jak tylko możliwe

Page 3: Continuous Integration

Definicja Zalety Schemat działania procesu Składowe procesu Najlepsze praktyki Cruise Control.NET (Demo)

Agenda

Page 4: Continuous Integration

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

Page 5: Continuous Integration

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

Page 6: Continuous Integration

„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

Page 7: Continuous Integration

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)

Page 8: Continuous Integration

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

Page 9: Continuous Integration

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.)

Page 10: Continuous Integration

Repozytoria kodu z wersjonowaniem

Wyzwalacze budowania

Automatyczne budowanie

Składowe procesu

(CVS, SVN, Perforce, SourceSafe)

(po zmianach, zaplanowany, ręczny)

(MSBuild, NMaven, Visual Studio)

Page 11: Continuous Integration

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)

Page 12: Continuous Integration

Wytwarzanie artefaktów◦ Dokumentacja◦ Raporty

Powiadomienia

Składowe procesu (c.d.)

(Mail, IM, Tray)

(Testy: Wyniki, Czasy, Pokrycie; metryki i statystyki kodu )

(DocProject, NDoc)

Page 13: Continuous Integration

Jedno repozytorium kodu Częsta synchronizacja kodu Szybki proces budowania Automatyczna instalacja Automatyczne wytwarzanie artefaktów

Najlepsze praktyki

Page 14: Continuous Integration

DEMOCruiseControl.NET

Page 15: Continuous Integration

Pytania?