3 popularne narzędzia do organizacji ciągłego wdrażania (Continuous Deployment)

3 popularne narzędzia do organizacji ciągłego wdrażania (Continuous Deployment)

Ciągłe wdrażanie — to szczególny sposób podejścia do tworzenia oprogramowania, który pozwala na szybkie, bezpieczne i efektywne wprowadzanie różnych funkcji do oprogramowania.

Główna idea polega na stworzeniu niezawodnego zautomatyzowanego procesu, który umożliwia programiście szybkie dostarczanie gotowego produktu użytkownikowi. W tym procesie wprowadzane są ciągłe zmiany w produkcji — nazywa się to pipeline'em ciągłej dostawy (CD Pipeline).

Skillbox poleca: Praktyczny kurs „Mobilny programista PRO”.

Przypominamy: dla wszystkich czytelników „Habra” — zniżka 10 000 rubli przy zapisie na dowolny kurs Skillbox z kodem promocyjnym „Habra”.

3 popularne narzędzia do organizacji ciągłego wdrażania (Continuous Deployment)

Do zarządzania przepływem można używać szerokiego wachlarza narzędzi, wśród których znajdują się zarówno płatne, jak i całkowicie bezpłatne. W tym artykule opisano trzy najpopularniejsze rozwiązania wśród programistów, które mogą być przydatne dla każdego programisty.

Jenkins

Kompletnie autonomiczny serwer automatyzacji z otwartym kodem źródłowym. Warto go wykorzystać do automatyzacji wszelkich rodzajów zadań związanych ze skontrowaniem, testowaniem, dostarczaniem lub wdrażaniem oprogramowania.

Minimalne wymagania dla PC:

  • 256 MB RAM, 1 GB przestrzeni dyskowej.

Optymalnie:

  • 1 GB RAM, 50 GB na dysku.

Do działania wymagana jest również dodatkowa aplikacja — Java Runtime Environment (JRE) w wersji 8.

Architektura (rozproszone obliczenia) wygląda następująco:
3 popularne narzędzia do organizacji ciągłego wdrażania (Continuous Deployment)

Serwer Jenkins — instalacja, która odpowiada za hosting GUI oraz organizację i wykonywanie całego buildu.

Węzeł/Szyna/Jenkins Node — urządzenia, które można skonfigurować do wykonywania pracy w budowie w imieniu Master (głównego węzła).

Instalacja dla systemu Linux

Najpierw należy dodać repozytorium Jenkins do systemu:

cd /tmp && wget -q -O — pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add — echo 'deb pkg.jenkins.io/debian-stable binary/' | sudo tee -a /etc/apt/sources.list.d/jen

Zaktualizuj repozytorium pakietów:

sudo apt update

Zainstaluj Jenkins:

sudo apt install jenkins

Po tym Jenkins będzie dostępny w systemie na domyślnym porcie 8080.

Aby sprawdzić jego działanie, należy otworzyć w przeglądarce adres localhost:8080. Następnie system poprosi o podanie początkowego hasła użytkownika z uprawnieniami root. Hasło to znajduje się w pliku /var/lib/jenkins/secrets/initialAdminPassword.

Teraz wszystko jest gotowe do pracy, można zacząć tworzyć strumienie CI/CD. Graficzny interfejs środowiska roboczego wygląda następująco:

3 popularne narzędzia do organizacji ciągłego wdrażania (Continuous Deployment)

3 popularne narzędzia do organizacji ciągłego wdrażania (Continuous Deployment)

Mocne strony Jenkins:

  • skalowalność, którą zapewnia architektura Master/Slave;
  • obecność REST XML/JSON API;
  • możliwość podłączenia dużej liczby rozszerzeń dzięki wtyczkom;
  • aktywna i stale rozwijająca się społeczność.

Wady:

  • brak modułu analitycznego;
  • niezbyt wygodny interfejs.

TeamCity

Komercyjny produkt firmy JetBrains. Serwer wyróżnia się prostą konfiguracją i doskonałym interfejsem. W domyślnej konfiguracji dostępnych jest wiele funkcji, a liczba dostępnych wtyczek stale rośnie.

Do pracy wymagana jest Java Runtime Environment (JRE) wersja 8.

Wymagania sprzętowe serwera nie są krytyczne:

  • RAM — 3,2 GB;
  • procesor — dwurdzeniowy, 3,2 GHz;
  • łącze o przepustowości 1 Gb/s.

Serwer zapewnia wysoką wydajność w pracy:

  • 60 projektów z 300 konfiguracjami budowy;
  • przydział 2 MB na dziennik budowy;
  • 50 agentów budowy;
  • możliwość pracy 50 użytkowników w wersji webowej i 30 użytkowników w IDE;
  • 100 połączeń zewnętrznej SCV, zazwyczaj Perforce i Subversion. Średni czas zmian — 120 sekund;
  • ponad 150 modyfikacji dziennie;
  • praca z bazą danych na jednym serwerze;
  • ustawienia procesu serwera JVM: -Xmx1100m -XX:MaxPermSize=120m.

Wymagania dotyczące agenta zależą od działających budów. Głównym zadaniem serwera jest monitorowanie wszystkich podłączonych agentów i przydzielanie budów z kolejki tym agentom na podstawie wymagań zgodności, z informowaniem o wynikach. Agenci działają na różnych platformach i systemach operacyjnych oraz mają wstępnie skonfigurowane środowisko.

Wszystkie informacje o wynikach budowy przechowywane są w bazie danych. Zawiera to w szczególności historię i inne podobne dane, zmiany VCS, agentów, kolejki budowy, konta użytkowników i uprawnienia. Do bazy nie wchodzą jedynie dzienniki budowy i artefakty.

3 popularne narzędzia do organizacji ciągłego wdrażania (Continuous Deployment)

Instalacja dla systemu Linux

Do ręcznej instalacji TeamCity z kontenerem serwletu Tomcat należy użyć archiwum TeamCity: TeamCity .tar.gz. Można je pobrać stąd.

tar -xfz TeamCity.tar.gz

/bin /runAll. sh [start|stop]

Podczas pierwszego uruchomienia należy wybrać typ bazy danych, w której będą przechowywane dane o budowie.

3 popularne narzędzia do organizacji ciągłego wdrażania (Continuous Deployment)

Domyślna konfiguracja działa na localhost:8111/ z jednym zarejestrowanym agentem budowy uruchomionym na tym samym komputerze.

Mocne strony TeamCity:

  • prosta konfiguracja;
  • wygodny interfejs;
  • duża liczba wbudowanych funkcji;
  • wsparcie techniczne;
  • dostępne API RESTful;
  • przyzwoita dokumentacja;
  • dobre zabezpieczenia.

Wady:

  • ograniczona integracja;
  • to płatne narzędzie;
  • mała społeczność (która jednak rośnie).

GoCD

Projekt open source, do zainstalowania i uruchomienia którego wymagana jest Java Runtime Environment (JRE) w wersji 8.

Wymagania systemowe:

  • RAM — minimum 1 GB, lepiej więcej;
  • procesor — dwurdzeniowy, o częstotliwości pracy rdzenia 2 GHz;
  • dysk twardy — minimum 1 GB wolnego miejsca.

Agent:

  • RAM — minimum 128 MB, lepiej więcej;
  • procesor — minimum 2 GHz.

Serwer zapewnia działanie agentów i oferuje łatwy w użyciu interfejs dla użytkownika:

3 popularne narzędzia do organizacji ciągłego wdrażania (Continuous Deployment)

Etapy/Zadania/Prace:

3 popularne narzędzia do organizacji ciągłego wdrażania (Continuous Deployment)

Instalacja dla systemu Linux

echo “deb download.gocd.org /” | sudo tee /etc/apt/sources.list.d/gocd.list

curl download.gocd.org/GOCD-GPG-KEY.asc | sudo apt-key add —
add-apt-repository ppa:openjdk-r/ppa

apt-get update

apt-get install -y openjdk-8-jre

apt-get install go-server

apt-get install go-agent

/etc/init.d/go-server [start|stop|status|restart]

/etc/init.d/go-agent [start|stop|status|restart]

Domyślnie GoCd działa na localhost:8153.

Mocne strony GoCd:

  • otwarty kod źródłowy;
  • łatwa instalacja i konfiguracja;
  • dobra dokumentacja;

  • świetny interfejs użytkownika:

3 popularne narzędzia do organizacji ciągłego wdrażania (Continuous Deployment)

  • możliwość śledzenia ścieżki wdrożenia GoCD w jednym widoku:

3 popularne narzędzia do organizacji ciągłego wdrażania (Continuous Deployment)

  • doskonała wizualizacja struktury potoku:

3 popularne narzędzia do organizacji ciągłego wdrażania (Continuous Deployment)

  • GoCD optymalizuje przepływ pracy CD w najpopularniejszych środowiskach chmurowych, w tym Dockerze, AWS;
  • narzędzie daje możliwość naprawy błędów w potoku, umożliwiając śledzenie każdej zmiany od commita do wdrożenia w czasie rzeczywistym.

Wady:

  • potrzebny jest przynajmniej jeden agent;
  • brak konsoli do wyświetlania wszystkich wykonanych zadań;
  • do wykonania każdej komendy należy utworzyć jedno zadanie w konfiguracji potoku;
  • do zainstalowania pluginu należy przenieść plik .jar do /plugins/external i ponownie uruchomić serwer;
  • względnie mała społeczność.

Podsumowując

To zaledwie trzy narzędzia, w rzeczywistości jest ich znacznie więcej. Wybór jest trudny, dlatego należy zwrócić uwagę na dodatkowe aspekty.

Otwarty kod źródłowy narzędzia pozwala zrozumieć, czym ono jest, oraz szybciej dodawać nowe funkcje. Jednak jeśli coś nie działa, można liczyć tylko na siebie i pomoc społeczności. Płatne narzędzia oferują wsparcie, które czasami może być krytyczne.

Jeśli bezpieczeństwo jest najważniejsze, warto pracować z lokalnym narzędziem. Jeśli nie, wybór rozwiązania SaaS to dobra opcja.

I na koniec: aby zapewnić naprawdę skuteczny proces ciągłego wdrażania, należy określić kryteria, których szczegóły pozwolą zawęzić wybór dostępnych narzędzi.

Skillbox poleca:

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster