Dlaczego Continous Integration to taka ważna kwestia w pracy programisty? Ponieważ to dzięki niej w znaczący sposób można usprawnić swoją pracę i skrócić czas oczekiwania na efekt projektu, a to nadal nie wszystko! Dowiedz się, na czym polega Ciągła Integracja i czy rzeczywiście już na stałe zagościła w branży programistycznej, czy jest jedynie chwilowym trendem!

 

Co to jest Continous Integration?

W wolnym tłumaczeniu jest to wspominana wyżej Ciągła Integracja. Jest praktyką programistyczną, umożliwiającą członkom zespołu na częste scalanie wyników swojej pracy i aktualizację wspólnego repozytorium. Niezależnie od niego działa serwer Continuous Integration, który w o określonej porze pobiera kod z repozytorium. Dzięki temu powstaje kilka zintegrowanych wersji kodu, które sprawdza automatyczny proces budowania, testowania i integrowania. Jeśli w kodzie pojawi się błąd, członkowie zespołu są natychmiast powiadamiani o powstałym problemie.

 

Żeby lepiej zrozumieć zagadnienie, wytłumaczymy to na przykładzie. Załóżmy, że Twój zespół programistyczny w tym samym czasie pracuje nad dwiema różnymi funkcjami. Część z developerów pracuje nad funkcją A, a druga część nad funkcją B. Aby zrealizować wszystkie założenia swoich projektów, muszą uaktualniać te same pliki. Jeśli dokonają zmian w identycznych plikach, za jakiś czas okaże się, że wprowadzone modyfikacje, trzeba będzie połączyć, tak, aby napisane przez nich kody nadal działały sprawnie. Pochłonie to olbrzymią ilość cennego czasu. Dlatego, aby rozwiązać ten problem, pojawiła się Ciągła Integracja. 

 

CI umożliwia korzystanie ze współdzielonego repozytorium kodu źródłowego wszystkim członkom zespołu rozwijającego produkt. W efekcie wprowadzane przez nich zmiany są regularnie integrowane – często nawet kilka razy w ciągu godziny. Sprawia to, że wszyscy programiści zaangażowani w projekt na bieżąco mogą śledzić zmiany i uwzględniać je w swojej pracy przy kodzie. 

 

Czym jest serwer Ciągłej Integracji?

Aby proces ciągłej integracji zachodził poprawnie, niezbędny jest serwer ciągłej integracji, będący współdzielonym repozytorium kodu, do którego dostęp powinni mieć wszyscy zainteresowani członkowie zespołu. Celem tego jest automatyczne sprawdzanie, czy każda kolejna zmiana wprowadzona przez programistę, jest zintegrowana z obecną wersją kodu oraz ze wszystkimi innymi zmianami uwzględnianymi przez pozostałych developerów. 

 

Jak działa taki proces? Kiedy programista wysyła zmiany do repozytorium kodu, serwer Ciągłej Integracji samodzielnie wykrywa i pobiera tę zmianę. Następnie buduje system, czyli produkt i uruchamia testowanie. Jeśli okaże się, że wszystkie przeprowadzone testy zakończą się pomyślnie (zielony build), serwer automatycznie poinformuje zespół o sukcesywnym zakończeniu pracy. Jeśli jednak okaże się, że któryś z testów nie zakończył się poprawnie (czerwony build), serwer da znać zespołowi, aby ten jak najszybciej zajął się rozwiązywaniem problemu. Warto podkreślić, że jeśli kod źródłowy produktu nie został poddany odpowiedniej ilości testów, nie nadaje się do poddawania Ciągłej Integracji. 

 

Jakie zmiany wprowadza Continuous Integration?

Istnieje grupa powodów, dla których warto zastanowić się nad wprowadzeniem rozwiązania, jakim jest Ciągła Integracją. Wśród nich znajdziesz zarówno aspekty czysto techniczne, jak i biznesowe. Poznaj 6 najważniejszych czynników. 

1.  Continuous Integration zmniejsza ryzyko wystąpienia problemów z integracją pod koniec trwania projektu. Ogranicza więc błędy, niekompatybilność interfejsów, a także trudny do określenia czas na scalenie projektu w całość.

2. Ciągła Integracja ułatwia naprawianie pojawiających się błędów. Dzięki niej szybko wykryjesz problem i określisz jego przyczynę. Znajdziesz to, co było ostatnio zmieniane i ewentualnie przywrócisz wersję, która działała w poprawny sposób.

3. CI zapobiega występowaniu przykrych niespodzianek i innych nieprzewidzianych sytuacji, pojawiających się wskutek rozbieżności w pracy środowiska developerów a osób odpowiedzialnych za produkcję. Są to np. rozbieżności w uruchamianiu danego języka lub, chociażby niestandardowe biblioteki.

4. CI pozwala na prezentowanie aplikacji klientowi i konsultowanie z nim wprowadzanych zmian. Możliwość ta pojawia się dzięki dostępności do ostatniej działającej wersji aplikacji.

5. Ciągła Integracja ułatwia refaktoryzację (proces wprowadzania zmian w projekcie bez zmieniania funkcjonalności). Możesz więc bez problemu sprawdzić, czy wszystko funkcjonuje tak, jak powinno.

6.  Continuous Integration odciąża programistów z obowiązku wykonywania tych samych powtarzalnych czynności, które, co więcej, wcale znacząco nie rozwijają projektu, a często ze względu na swoją złożoność, pochłaniają wiele czasu.

 

Narzędzia wspierające Ciągłą Integrację

Aby proces CI przebiegał sprawnie, niezbędne jest korzystanie z niektórych narzędzi. Warto więc bliżej przyjrzeć się współdzielonym repozytoriom kodu takim jak: GitHub, BitBucket, GitLab i Sourceforge. Z kolei jako serwer Ciągłej Integracji można wybrać: Jenkins, Team City, Travis, Codeship lub Semaphore. 

 

Co z tym trendem CI?

Wiesz już, że Ciągła Integracja rozwiązuje mnóstwo problemów, pojawiających się w codziennej pracy zespołu developerskiego, pracującego przy jednym produkcie. Skraca czasochłonny proces integracji kodu i zapobiega występowaniu w nim błędów. To duże ułatwienie także dla osoby nadzorującej projekt – Project Managera. Umożliwia mu sprawniejsze kierowanie zespołem i zwiększanie jego wydajności.  Wydaje się więc, że Continuous Integration nie jest jedynie chwilowym trendem w branży IT i że ze względu na swoje liczne zalety, zagości w pracy programistów na dużej.