Kontrola wersji a repozytoria artefaktów: dwa kawałki puzzli

Artykuł opublikowany 10 sierpnia 2017, zaktualizowany 4 lutego 2021 przez Magdalenę Korgul, Content Specialist w Deviniti

Jak poprawić produktywność zespołów inżynierskich i deweloperskich? Jednym z szeroko stosowanych sposobów jest korzystanie z narzędzia do kontroli wersji. Przenoszenie kodu na dysk zewnętrzny i ręczna synchronizacja to możliwy, ale wysoce nieefektywny sposób działania. System kontroli ułatwia współpracę, śledzenie i zrozumienie zmian w kodzie, co ostatecznie prowadzi do poprawy jakości oprogramowania. Zbiór praktyk continuous delivery i integration zakłada automatyzację procesu wdrażania aplikacji, a o tę trudno bez wykorzystywania repozytorium kodu. Jak połączyć ze sobą te dwa kawałki puzzli, które złożą się na uporządkowany system pracy i widoczne efekty?

Continous Integration i Delivery – co to jest i jak ma się do systemu kontroli wersji?

Zespół praktyk CI – Continous Integration (Ciągłej Integracji) i CD – Continous Delivery (Ciągłego Dostarczania) to cała kultura pracy i zbiór zasad dotyczących pracy nad projektami deweloperskimi. Podzielenie pracy na mniejsze, wciąż sprawdzane i testowane, etapy, pozwala na minimalizację błędów i większą efektywność wykonywania zadań.

Continuous Integration skupia się wokół wprowadzania drobnych zmian w kodzie i sprawdzania ich w repozytorium kodu. Celem Ciągłej Integracji jest przeprowadzenie możliwie jak najdokładniejszych testów, by wyłapać i wykluczyć błędy już na wczesnych etapach prac. Wypracowanie odpowiednich mechanizmów integracji jest niezbędne w przypadku tworzenia kodu z wykorzystaniem różnych platform.

Z kolei Continous Delivery ma na celu zautomatyzowanie całego cyklu życia dostarczania do ostatniego środowiska przed produkcją. Wykorzystanie CD daje okazję do zintegrowania poszczególnych środowisk wykorzystywanych do kolejnych etapów pracy i automatyzację wprowadzanych zmian.

CI/CD i system kontroli wersji

System kontroli wersji (nazywany też systemem kontroli zmian czy systemem kontroli źródła), pozwalający na śledzenie zmian w produkcji kodu źródłowego, idealnie wpasowuje się w kulturę pracy zgodną z CI/CD. Umożliwia szybkie wykrywanie błędów, powrót do poprzednich wersji kodu, a także odtworzenie pełnego projektu z poprzednich części prac. Popularnymi oprogramowaniami do kontroli wersji są Perforce Helix, Git i Mercurial.

śledzenie pełnej historii zmian,
możliwość wycofania projektu do ostatniego stanu,
usprawnienie komunikacji w zespole przez przejrzystość wprowadzania zmian,
możliwość przechowywania kopii kodu poza organizacją i jej przywrócenia w razie kradzieży sprzętów,
automatyzacja procesów CI/CD,
integracja z zewnętrznymi systemami, np. Jira.

Dwa kawałki jednej układanki

Panowanie nad skomplikowanym kodem

Rzeczywiste wymagania względem oprogramowania są z roku na rok coraz bardziej złożone. Ten zwiększony poziom skomplikowania prowadzi do powstawania większych i bardziej zawiłych kodów źródłowych, które z kolei wymagają wyspecjalizowanych narzędzi, umożliwiających zespołom bezpieczne poprawianie i aktualizowanie oprogramowania, jak również współpracę przy jego tworzeniu.

Możliwość zrozumienia jak, dlaczego i kiedy zmienił się fragment kodu jest konieczna, jeśli chcemy zgłębić przyczyny spadku wydajności, problemów z zabezpieczeniami i bugów. Zestaw narzędzi oferowany przez system kontroli wersji dostarcza wielu funkcji, które pomagają użytkownikom osiągnąć ten cel w sposób bezpieczny, łatwy i wydajny, bez względu na rozmiar zespołu czy kodu źródłowego.

Zwiększenie efektywności zespołów

Produktem ubocznym tej poprawy widoczności jest zwiększona pewność zespołu co do dokonywania szybkich poprawek w oprogramowaniu w przypadku zmiany wymagań biznesowych. To pozwala zespołom zwiększyć efektywność, poprawiając równocześnie ich zdolność do śledzenia zmian w oprogramowaniu podczas jego szybkiej ewolucji.

Przyspieszenie cyklu życia oprogramowania ma wiele zalet; wczesne i częste wydania pozwalają opracować płynniejszy przepływ pracy, który może uwzględniać feedback od klienta, czy też poprawki związane ze zmianą celów biznesowych.

Te zmiany cyklu życia oprogramowania, poczynając od kontroli wersji, wywołały efekt fali działający na inne narzędzia używane w codziennej pracy programisty. Continous integration, analiza statyczna, przechowywanie artefaktów, narzędzia wdrożeniowe – wszystko to podlega zmianom wraz z coraz szerszym użyciem i narastającymi zależnościami przy tworzeniu oprogramowania. Inżynierowie są dziś zależni od możliwości integracji swojego systemu kontroli wersji z wieloma innymi narzędziami, umożliwiającymi zwiększenie szybkości pracy, przy zachowaniu (lub poprawie!) jakości oprogramowania.

Przechowywanie artefaktów ma ogromne znaczenie w nowych, szybkich workflowach, i doskonale zazębia się z funkcjami widoczności i współpracy, jakich dziś oczekują inżynierowie w swoich narzędziach kontroli wersji. Repozytorium binarne i platforma do przechowywania artefaktów to klucz do zwiększenia widoczności, poprawy wdrożeń i sprawnego zarządzania artefaktami builda, gdyż pozwala ona inżynierom na szybkie wgrywanie artefaktów, kontrolę dostępu do nich, współpracę, i wdrażanie z różnych języków programowania i środowisk.

Układanie puzzli, czyli workflow CI/CD

Na przykładzie wykorzystania systemu do kontroli wersji, Perforce Helix Core, zobaczmy, jak może wyglądać workflow budowania kodu w zgodzie z kulturą CI/CD.

Zespół modyfikuje i recenzuje kod Java na swoich stacjach roboczych, kod wysyłany jest na serwer Perforce Helix, usługa Continuous Integration (np. Jenkins) pyta serwer Helix o aktualny kod buildu, np. przy pomocy wtyczki Perforce Jenkins, usługa CI buduje i testuje kod, gdy kod przejdzie testy, do rewizji dodawany jest tag z identyfikatorem wersji, a następnie kod wysyła się na serwer Helix, build jest kontynuowany przez wysyłanie artefaktów JAR przy pomocy Mavena do serwisu packagecloud.io, oprogramowanie jest teraz gotowe do finalnego wydania.

Jakie korzyści przyniesie opisany workflow?

  • Testy wykonują się przy wprowadzaniu nowych zmian, co umożliwia wczesne wyłapanie bugów przez testy automatyczne.
  • Konkretna rewizja, z której będzie budowany nowy obiekt, jest oznaczona tagiem. Pozwala to deweloperowi łatwo porównać dwa buildy i wychwycić przyczyny spadku wydajności lub bugi.
  • Zbudowane artefakty mają przypisaną wersję. Dzięki temu deweloper może połączyć artefakty z kodem źródłowym, z którego zostały wygenerowane.
  • Zbudowane artefakty przechowywane są w serwisie za pośrednictwem Mavena. Pozwala to na łatwe wdrażanie finalnego oprogramowania i umożliwia łatwy rollback: developer może po prostu zmienić numer wersji do wdrożenia, by wrócić do poprzedniej wersji artefaktu.

Workflow pozwala zespołom zwiększyć szybkość cyklu rozwoju oprogramowania, poprawiając jednocześnie jakość i widoczność.

Skontaktuj się z nami i popraw produktywność zespołu

Skonsultuj się ze specjalistami Deviniti już teraz