Continuous Integration – Ciągła Integracja

Continuous Integration (CI), czyli ciągła integracja to praktyka inżynierii oprogramowania, w której integruje się kod kilka razy dziennie w zdalnym repozytorium, aby uzyskać szybką informację zwrotną na temat tego czy kod poprawnie się kompiluje.

Continuous Integration - Ciągła Integracja

Continuous Integration - Ciągła Integracja


Continuous Integration (CI), czyli ciągła integracja to praktyka inżynierii oprogramowania, w której integruje się kod kilka razy dziennie w zdalnym repozytorium, aby uzyskać szybką informację zwrotną na temat tego czy kod poprawnie się kompiluje. CI umożliwia automatyczne budowanie i testowanie, dzięki czemu zespół może pracować ciągle ze wszystkimi najnowszymi i sprawdzonymi zmianami innych członków zespołu. W przeciwieństwie do tradycyjnego cyklu tworzenia oprogramowania, wszystkie działania i zmiany programistyczne są wykonywane w mniejszych porcjach i wdrażane częściej – jak np w Scrum’ie. Ta ciągła integracja ułatwia identyfikację problemów na czas i ich rozwiązywanie przed uruchomieniem. Ta praktyka zwiększa zaufanie kodu.

Podsumowując CI polega na łączeniu całego kodu wszystkich programistów z jedną gałęzią repozytorium. Jest to robione zgodnie z harmonogramem, próbując uniknąć konfliktów w kodzie. Chodzi o to, że mając wiele osób w projekcie, trzeba utrzymać główną gałąź repozytorium w najnowszej wersji kodu źródłowego. Tak aby każdy programista mógł sprawdzić najnowszy kod lub go pobrać np. za pomocą Git’a. Ciągła Integracja może też być przydatna nawet w jednoosobowym projekcie. Nie musisz się wtedy martwić, żeby kompilować kod czy puszczać samemu testy. Ustawiasz harmonogram i reszta sama się dzieje.

Czym to się je?

Ważnymi cechami narzędzi do CI jest integracja z systemami kontroli wersji i systemem monitorowania, przeprowadzania testów, analizy kodu / analizy wydajności, powiadomień, dziennikami wyników i przechowywania artefaktów. Poniżej opiszę dwa narzędzia CI, które warto rozważyć do użycia w swoim środowisku. Będzie to Bamboo i Jenkins. Są to systemy do pomocy przy automatyzacji procesów tworzenia oprogramowania, zapewniające ciągłą integrację.

Jenkins

Jest niezależnym systemem automatyzacji procesów typu Open Source. Można go używać do automatyzacji wszelkiego rodzaju zadań związanych z budowaniem, testowaniem oraz dostarczaniem lub wdrażaniem oprogramowania.
Jenkins można zainstalować za pomocą natywnych pakietów systemowych czy Dockera. Można go też uruchomić samodzielnie na dowolnym komputerze z zainstalowanym środowiskiem Java Runtime Environment (JRE) w wersji 8. Jego instalacja i konfiguracja nie jest tak prosta jak w przypadku Bamboo. Jednak jego ogromną przewagą jest to, że jest darmowy. Posiada też duże wsparcie społeczności. Stworzono do niego mnóstwo plugin’ów. Co może być traktowane jako coś pozytywnego ale i negatywnego. Często to sprawia, że musimy długo się zastanawiać i debatować, który plugin będzie najlepiej pasował do rozwiązania napotkanego problemu.

Obraz został pobrany ze strony wiki.jenkins.io

Bamboo

Bamboo to serwer CIfirmy Atlassian. Podobnie jak JenkinsBamboo pozwala programistom automatycznie budować, integrować i testować kod, a następnie przygotować go do wdrożenia. Narzędzie współpracuje również płynnie z innymi narzędziami Atlassian, takimi jak Jira (zarządzanie projektami) i Bitbacket (zarządzanie repozytoriami Git’a). Integracja z Jirą zapewnia bezpośredni związek między narzędziem do zarządzania projektami a tym, co naprawdę dzieje się w konkretnej fazie rozwoju oprogramowania. Manager projektu może sprawdzić w Jira, czy dane zadanie zostało już zbudowane i wdrożone, a wdrożenie zakończyło się powodzeniem. Bamboo można powiedzieć, że jest samowystarczalnym i intuicyjnym narzędziem z profesjonalnym wsparciem. A to niestety kosztuje.

Obraz został pobrany ze strony confluence.atlassian.com

Nie jest prosto wybrać, które narzędzie będzie bardziej pasowało do naszego projektu. Jeżeli już korzystasz z Jiry i Bitbucket’a, to intuicyjnym (choć nie tanim) wyborem będzie Bamboo. W przypadku, gdy twoje fundusze są ograniczone i nie zależysz od programowania, możesz wybrać Jenkinsa.

close

Newsletter