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
    1. O dojrzewanie idei
    2. Super szybki prototyp z linii komend
    3. O redukcji ryzyka
    4. Czy należy budować przy każdej zmianie?
    5. Narzędzia
  • Kontrola wersji
    1. Wybór właściwego systemu
    2. Właściwa budowa repozytorium i projektu
    3. Uporządkowany projekt jako klucz do sukcesu
    4. Subversion vs. TFS Source Control vs. Git
    5. Dlaczego w repozytoriom powinno znajdować się wszystko, co jest potrzebne do zbudowania oprogramowania?
  • Automatyzacja buildów
    1. Minimalizacja błędów poprzez automatyzację powtarzalnych czynności
    2. Wszystkie dzieci Make
    3. Skryptowe narzędzia automatyzacji – MSBuild i Ant
    4. Zasada pojedynczego aktywatora czyli dlaczego automatyzację warto oddzielić od IDE
    5. Rozszerzanie możliwości narzędzi automatyzacyjnych
  • Serwer Continuous Integration
    1. Od grafu zorientowanego do pętli zadań
    2. Wybór serwera integracyjnego
    3. Dlaczego build nie powinien trwać dłużej niż 10 minut
    4. Dodatkowe funkcje serwerów – kolejkowanie, pre-test commit
  • Testowanie
    1. Testowy zawrót głowy: testy jednostkowe, integracyjne, akceptacyjne, systemowe, użytkownika
    2. Wybór zakresu testowania dla ciągłej integracji
    3. NUnit i JUnit w akcji
    4. Mierzenie pokrycia testami jednostkowymi
    5. Organizacja testów – szybkie testy na początku
    6. Przerywanie integracji po pierwszym nieudanym teście
    7. Informacje zwrotne – dlaczego powinny być natychmiastowe
    8. Rozszerzanie repertuaru czyli FitNesse, White i inne Framework
  • Integracja baz danych
    1. Testy w bazach danych
    2. Wypełnianie bazy danych danymi testowymi czyli dbamy o powtarzalność testów
    3. Dlaczego programiści powinni pracować na lokalnej bazie danych?
    4. O przechowywaniu artefaktów baz danych w repozytorium.
  • Utrzymanie schludnego kodu
    1. Statyczna analiza kodu
    2. Dlaczego zasady kodowania to najważniejszy dokument w grupie programistów?
    3. Eliminacja zdublowanego kodu
    4. Różnice w analizie kodu prekompilowanego i źródłowego
    5. Używanie metryk kodu do jego weryfikacji
  • Generowanie i utrzymanie dokumentacji
    1. Dlaczego warto wykorzystać kod źródłowy do wytwarzania dokumentacji projektu?
    2. O tym, że generowanie dokumentacji nie zwalnia z obowiązku dokumentowania
  • Deployment
    1. Integralna część procesu ciągłej integracji
    2. Utrzymywanie pełnej gotowości do wdrożenia
    3. Wersjonowanie kodu
  • Skalowanie procesu Countinuous Integration
    1. Przezwyciężanie niechęci grupy
    2. Wzorce i antywzorce
    3. Siedem grzechów głównych powolnej integracji
    4. 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.

A tutaj kopia całej strony.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *