Continuous Integration – Ciągła Integracja

Continuous Integration - Ciągła Integracja

Poziom trudności
2/5

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 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, 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

Jenkins jest niezależnym systemem automatyzacji procesów typu Open Source, którego można 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, Dockera, a nawet 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.

Continuous Integration   Ciągła Integracja image
Obraz został pobrany ze strony wiki.jenkins.io

Bamboo

Bamboo to serwer CIfirmy Atlassian. Podobnie jak Jenkins, Bamboo 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.

Continuous Integration   Ciągła Integracja image
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.

Dodaj komentarz