Scroll to top
en pl

GitLab 10.0 – Automatyczne Continuous Integration i Deployment w akcji


Armin Orlik - 6 lutego 2018 - 0 comments

Nowy GitLab 10.0 zużywa znacznie mniej pamięci, działa szybciej oraz bardzo przyspiesza proces developmentu. To wygodne narzędzie do realizacji projektów w oparciu o najlepsze praktyki DevOps. Daje możliwość pełnej i automatycznej kontroli nad całym procesem tworzenia.

Jak wspomniałem w poprzednim artykule, nowy GitLab 10.0 zasługuje na szczególną uwagę ze względu na zautomatyzowanie wszystkich funkcji związanych z DevOps. To zupełna nowość, która wyzwala potencjał twórczy każdego programisty, uwalniając go od manualnych operacji zgodnych z procedurami DevOps. Cały pomysł najnowszej wersji GitLab opiera się na zautomatyzowanych procesach Auto DevOps.

Jak Auto DevOps działa w praktyce?

Po zainstalowaniu najnowszej wersji GitLab możemy przystąpić do realizacji nowego projektu (w wersji On-Premises, wersja Cloud oczywiście dostępna pod adresem Gitlab.com). Po utworzeniu nowego repozytorium, GitLab od razu będzie sugerował uruchomienie nowej funkcję Auto DevOps dla naszego projektu.

 

Jeśli jesteś administratorem własnego GitLab, możesz włączyć domyślnie Auto DevOps dla każdego użytkownika w twojej organizacji za pomocą ustawień administratora.

Jeśli już jesteśmy przy ustawieniach, to w panelu Settings możemy rozszerzyć naszą konfigurację. Wybierając pozycję Integrations dla tej instalacji GitLab,

na początek dodamy obsługę Kubernetes, która umożliwi nam połączenie z główną platformą wdrożeniową.

W tym samym oknie, poniżej znajdziemy również inną opcję: Prometheus. Zaznaczenie jej umożliwia śledzenie danych z projektu. Następnie możemy wrócić do naszego projektu (klikamy lewy górny róg z nazwą naszego projektu). Oczywiście sam nowy projekt nie będzie zawierał jeszcze żadnych danych, ale GitLab podpowiada nam w ramach instrukcji, co powinniśmy zrobić w następnej kolejności.

Zakładając że chcemy wykorzystać istniejący lokalnie projekt, wykonujemy właściwy fragmentu gotowej instrukcji i po chwili nasze repozytorium zdalne w GitLabie jest przygotowane do pracy. GitLab w momencie jakiejkolwiek zmiany w naszym repozytorium (np. commit’a lub merge’a) informuje GitLab Runnera, o tym że należy zbudować projekt.

Edycja kodu

Wracając do GitLaba, widzimy że nasz nowy kod jest już widoczny. Podane jest imię i nazwisko użytkownika, który ostatnio nad nim pracował.

 

W tym miejscu chciałbym zauważyć, że nasz projekt nie uwzględnia żadnych plików związanych z automatyzacją, które mogłyby cokolwiek sugerować GitLabowi. Po wprowadzeniu niewielkiej zmiany w naszym projekcie:

oraz utworzeniu merge requesta, Gitlab automatycznie stworzy i uruchomi dla nas  pipeline CI/CD.

 

Co ciekawe, mimo że nie skonfigurowaliśmy zupełnie nic w zakresie CI / CD, dzięki nowej usłudze Auto DevOps pipeline zostanie utworzony automatycznie. W oknie obrazującym jego szczegóły będziemy mieli wgląd do wszystkich poszczególnych etapów procesu automatyzacji, która została dla nas przygotowana i uruchomiona.

 

Zasada działania jest stosunkowo prosta. W pierwszym etapie do wykonania buildu naszego projektu, GitLab wykorzystuje BuildPack Heroku do wykrycia języka oraz stworzenia właściwego obrazu Dockera.

Przy wsparciu Heroku, Auto DevOps w GitLab 10.0 obsługuje wszystkie języki programowania oraz frameworki, które są dostępne za pomocą pakietów buildów Heroku, takich jak Ruby, Rails, Node, PHP, Python i Java. Dzięki temu GitLab automatycznie wykrywa język używany przez programistę i przeprowadza dedykowane dla niego domyślne testy.

Również w fazie testów, uruchamiana jest analiza statystyczna jakości kodu (Code Quality) W kolejnym etapie przechodzimy do deploymentu – Review App przy wcześniejszej integracji GitLaba z Kubernetes przeprowadzi nas przez cały ten proces. Zważywszy na fakt, iż pipeline został wygenerowany automatycznie musimy pamiętać, że bazuje on na domyślnych ustawieniach  – w aktualnym etapie uruchomi Kubernetes używając domyślnych ustawień Helm Chart.

 

Wracając do okna dialogowego (Merge Requests) widzimy pełne zestawienie wykonanych zadań. Do dyspozycji mamy m.in.: wygenerowany adres URL z wdrożoną wersją naszego projekty (tylko do podglądu – nie jest to oczywiście jeszcze wersja produkcyjna), oraz  Code Quality z sugestią zmian kodu w celu usprawnienia jego działania.

Jeśli nie mamy żadnych zastrzeżeń, możemy przystąpić do mergowania.

Po zakończeniu mergowania, i przejściu do kategorii Pipelines (lewy panel w opcjach CI /CD) możemy zobaczyć nowy pipeline.

 

Zmianie ulegają ostatnie fazy działania pipeline’u. W miejscu podglądu wdrożenia (Review App), mamy tym razem ostateczny deployment na środowisku produkcyjnym.

W kolejnym kroku, po wyborze Enviroments (lewy panel w opcjach CI /CD) widzimy nasz kod na etapie produkcyjnym. Do dyspozycji domyślnie mamy utworzoną jedną instancję naszego projektu. A co w przypadku gdybyśmy chcieli zwiększyć skalę działania?

Secret variables

W kategorii Settings, i zakładce CI / CD która znajduje się w również w głównym menu, do naszej dyspozycji jest opcja o nazwie Secret variables. Wpisując w polu Key “PRODUCTION_REPLICAS” możemy łatwo zadeklarować pożądaną liczbę instancji naszego projektu.

 

Wracając do zakładki Environments w kategorii CI / CD, uruchamiamy przycisk Re-deploy. W ten sposób odświeżamy proces wdrożenia w zdefiniowanej przed chwilą skali.

Na tym etapie GitLab udostępnia nam jeszcze jedną ciekawą opcję do monitorowania procesu deploymentu oraz wydajności naszej aplikacji.

 

 

Dane generowane są automatycznie i prezentowane w formie wykresów graficznych, za pomocą których możemy dokonać szczegółowej analizy.

Tym właśnie jest Auto DevOps – od buildu, poprzez testowanie, weryfikację jakości, następnie wdrożenie do środowiska produkcyjnego, na monitoringu całego procesu kończąc.

Rozszerzone funkcje GitLab 10.0 stanowią bardzo dobre wsparcie całego procesu developmentu w ramach dobrych praktyk DevOps. Pełna automatyzacja pozwala zaoszczędzić czas i zwrócić uwagę na większą optymalizację. Nie musimy już myśleć o procedurach i etapach, bo te pojawiają się same i we właściwym momencie.

Skontaktuj się z nami, jeśli chcesz dowiedzieć się więcej o możliwościach nowego GitLab 10.0.

Related posts