Ciągła integracja – cechy dobrego wdrożenia
Prawie równo 8 lat temu, w marcu 2011 roku, ukazała się książka mojego współautorstwa „Continuous Integration in .NET”. Książka powstawała równolegle z moją firmą. Z CODEFUSION. Książka sprzedawała się całkiem nieźle. Zresztą sprzedaje się nadal (na szczęście Amerykanie przestali przysyłać czeki pocztą, teraz przychodzą zwykłe przelewy na konto). Powstał pomysł przekucia jej w kurs. Pomysł został zrealizowany. Powstał dwudniowy kurs i oferta konsultacji indywidualnych. Zacząłem podróżować po Polsce – bardzo miło wspominam pobyty w TIETO w Szczecinie, eSky w Katowicach czy Pramerica oraz Hypermedia Isobar w Warszawie. Dla mnie, umiarkowanego introwertyka, były to bezcenne doświadczenia. Zabawa w Continuous Integration była jednak bardzo czasochłonna, a nie budowała wartości dodanej w tej dziedzinie, która była wtedy najważniejsza: w budowaniu stabilnej i dobrze działającej firmy. W związku z tym ta gałąź mojej/naszej działalności w sposób naturalny zaczęła usychać. Regularnie dostajemy jeszcze zapytania o szkolenia lub konsultacje, ale regularnie je odrzucamy. Dlatego też zamykamy stronę continuosuintegration.pl w takiej formie jaka jest teraz: strony wisytówki kursów i konsultacji. Nie wiem jeszcze co się z nią stanie, ale nie chcę, żeby materiały na jej zawarte przepadły. Poniżej wklejam dla potomności treści z continuousintegration.pl”
Co to jest Continuous Intergration?
Continuous Intergration to ciągła integracja, jako grupa praktyk XP, zdobyła uznanie na całym świecie, skutecznie eliminując liczbę błędów w wytwarzanym oprogramowaniu. Efektywne wdrożenie tych praktyk to m.in.:
- wcześniejsze wykrywanie błędów – błędy integracyjne wykrywane są jeszcze na etapie programowania,
- stały dostęp do najnowszej wersji wytwarzanego oprogramowania, co jest niezwykle istotne dla całego procesu wytwarzania oprogramowania,
- zmniejszenie nakładów pracy na łączenie kodu tworzonego przez wielu programistów,
- większa odpowiedzialność wśród programistów, gdyż praca każdego z nich jest weryfikowana już na poziomie automatycznego budowania nowej wersji.
Konsultacje
Czy twoja organizacja potrzebuje profesjonalnej pomocy z dziedziny Continuous Integration? Jeśli tak to jesteś w dobrym miejscu. W naszej ofercie znajduje się profesjonalny support ze szczególnym uwzględnieniem ciągłej integracji w środowisku i dla platform Microsoft Windows.
Wdrażanie pełnego cyklu Continuous Integration w firmie programistycznej
- System kontroli wersji
- Automatyzacja budowy oprogramowania
- Wdrożenie serwera ciągłej integracji
- Testy jednostkowe
- Rozwijanie repertuaru testowego – testy integracyjne, akceptacyjne
- Generowanie dokumentacji
- Statyczna analiza kodu
- Ciągła integracją z bazą danych
- Skalowanie
- Specjalistyczne porady i pomoc we wdrożeniach ciągłej integracji w systemach TFS firmy Microsoft oraz w rozwiązaniach opartych o otwarte oprogramowanie (Hudson, CruiseControl.NET, TeamCity).
Instalacja i konfiguracja systemów kontroli wersji na serwerach Windows: TFS Source Control, Subversion (SVN), Git.
Organizacja repozytorium projektowego i jego obsługa (klient TFS Source Control w Visual Studio, TortoiseSVN, narzędzia linii komend).
Automatyzacja procesu budowy oprogramowania (MSBuild, Ant).
Wczesna eliminacja problemów poprzez zastosowanie metod automatycznego testowania kodu źródłowego (NUnit, MSTest, test mocking).
Testy interfejsu użytkownika i akceptacyjne (Selenium, Framework White, FitNesse), testy regresyjne oraz testy obciążeniowe.
Generowanie dokumentacji kodu źródłowego (Sandcastle).
Wymuszanie standaryzacji kodu i eliminacja niewłaściwych nawyków poprzez zastosowanie statycznej analizy oraz metryk kodu źródłowego (FxCop, StyleCop, NDepend).
Zarządzanie bazą danych w procesie ciągłej integracji.
Wersjonowanie produktów, automatyczne tworzenie pakietów instalacyjnych, instalacja na serwerach testowych (MS Deploy, WiX, tworzenie plików MSI).
Skalowanie: kolejkowanie buildów, farmy serwerów CI.
Szkolenie
Program szkolenia
- Wprowadzenie do zagadnień Continuous Integration
- O dojrzewanie idei
- Super szybki prototyp z linii komend
- O redukcji ryzyka
- Czy należy budować przy każdej zmianie?
- Narzędzia
- Kontrola wersji
- Wybór właściwego systemu
- Właściwa budowa repozytorium i projektu
- Uporządkowany projekt jako klucz do sukcesu
- Subversion vs. TFS Source Control vs. Git
- Dlaczego w repozytoriom powinno znajdować się wszystko, co jest potrzebne do zbudowania oprogramowania?
- Automatyzacja buildów
- Minimalizacja błędów poprzez automatyzację powtarzalnych czynności
- Wszystkie dzieci Make
- Skryptowe narzędzia automatyzacji – MSBuild i Ant
- Zasada pojedynczego aktywatora czyli dlaczego automatyzację warto oddzielić od IDE
- Rozszerzanie możliwości narzędzi automatyzacyjnych
- Serwer Continuous Integration
- Od grafu zorientowanego do pętli zadań
- Wybór serwera integracyjnego
- Dlaczego build nie powinien trwać dłużej niż 10 minut
- Dodatkowe funkcje serwerów – kolejkowanie, pre-test commit
- Testowanie
- Testowy zawrót głowy: testy jednostkowe, integracyjne, akceptacyjne, systemowe, użytkownika
- Wybór zakresu testowania dla ciągłej integracji
- NUnit i JUnit w akcji
- Mierzenie pokrycia testami jednostkowymi
- Organizacja testów – szybkie testy na początku
- Przerywanie integracji po pierwszym nieudanym teście
- Informacje zwrotne – dlaczego powinny być natychmiastowe
- Rozszerzanie repertuaru czyli FitNesse, White i inne Framework
- Integracja baz danych
- Testy w bazach danych
- Wypełnianie bazy danych danymi testowymi czyli dbamy o powtarzalność testów
- Dlaczego programiści powinni pracować na lokalnej bazie danych?
- O przechowywaniu artefaktów baz danych w repozytorium.
- Utrzymanie schludnego kodu
- Statyczna analiza kodu
- Dlaczego zasady kodowania to najważniejszy dokument w grupie programistów?
- Eliminacja zdublowanego kodu
- Różnice w analizie kodu prekompilowanego i źródłowego
- Używanie metryk kodu do jego weryfikacji
- Generowanie i utrzymanie dokumentacji
- Dlaczego warto wykorzystać kod źródłowy do wytwarzania dokumentacji projektu?
- O tym, że generowanie dokumentacji nie zwalnia z obowiązku dokumentowania
- Deployment
- Integralna część procesu ciągłej integracji
- Utrzymywanie pełnej gotowości do wdrożenia
- Wersjonowanie kodu
- Skalowanie procesu Countinuous Integration
- Przezwyciężanie niechęci grupy
- Wzorce i antywzorce
- Siedem grzechów głównych powolnej integracji
- Rozpraszanie architektury integracyjnej
Szkolenie z życia wzięte
Szkolenie w 100% polega na doświadczeniach trenera zdobytych w międzynarodowych projektach programistycznych prowadzonych w małych i średnich grupach projektowych. Zagadnienia teoretyczne zbalansowane są bogatym materiałem praktycznym prezentującym proste acz z życia wzięte przykłady zastosowania Continuous Integration.
Od uczestników szkolenia wymagana jest podstawowa wiedza z zakresu programowania w .NET lub Java.
Artykuł
No i artykuł z 2012 roku „Szybki kurs ciągłej integracji”. Jest to krótki tutorial, który pozwoli Ci w szybki sposób wystartować z CI w twoim projekcie .NET.