Continuous Integration

Preview:

DESCRIPTION

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

Citation preview

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?

Recommended