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

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

Ciągłe wdrażanie to specjalne podejście w tworzeniu oprogramowania, które służy do szybkiego, bezpiecznego i wydajnego wdrażania różnych funkcji w oprogramowaniu.

Główną ideą jest stworzenie niezawodnego, zautomatyzowanego procesu, który pozwoli deweloperowi szybko dostarczyć użytkownikowi gotowy produkt. Jednocześnie następują ciągłe zmiany w produkcji - nazywa się to rurociągiem ciągłego dostarczania (CD Pipeline).

Skillbox poleca: Kurs praktyczny „Programista mobilny PRO”.

Przypomnienie: dla wszystkich czytelników „Habr” - rabat w wysokości 10 000 rubli przy zapisywaniu się na dowolny kurs Skillbox przy użyciu kodu promocyjnego „Habr”.

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

Aby kontrolować przepływ, możesz skorzystać z szerokiej gamy narzędzi, zarówno płatnych, jak i całkowicie bezpłatnych. W artykule opisano trzy najpopularniejsze rozwiązania wśród programistów, które mogą przydać się każdemu programiście.

Jenkins

W pełni samodzielny serwer automatyzacji typu open source. Warto z nim pracować, aby zautomatyzować wszelkiego rodzaju zadania związane z budowaniem, testowaniem, wysyłką czy wdrażaniem oprogramowania.

Minimalne wymagania PC:

  • 256 MB RAM, 1 GB miejsca na pliki.

Optymalne:

  • Pamięć RAM 1 GB, dysk twardy 50 GB.

Do pracy potrzebne będzie także dodatkowe oprogramowanie - Java Runtime Environment (JRE) w wersji 8.

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

Jenkins Server to instalacja odpowiedzialna za hosting GUI, a także organizację i wykonanie całej kompilacji.

Jenkins Node/Slave/Build Server - urządzenia, które można skonfigurować do wykonywania prac kompilacji w imieniu Master (węzeł master).

Instalacja dla Linuksa

Najpierw musisz 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 binarny/' | sudo tee -a /etc/apt/sources.list.d/je

Zaktualizuj repozytorium pakietów:

sudo apt update

Zainstaluj Jenkinsa:

sudo apt zainstaluj Jenkinsa

Po tym Jenkins będzie dostępny w systemie poprzez domyślny port 8080.

Aby sprawdzić funkcjonalność należy otworzyć adres w przeglądarce localhost:8080. System wyświetli monit o podanie początkowego hasła użytkownika root. Hasło to znajduje się w pliku /var/lib/jenkins/secrets/initialAdminPassword.

Teraz wszystko jest gotowe, możesz rozpocząć tworzenie przepływów CI/CD. Interfejs graficzny środowiska roboczego wygląda następująco:

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

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

Mocne strony Jenkinsa:

  • skalowalność zapewniana przez architekturę Master/Slave;
  • dostępność API REST XML/JSON;
  • możliwość podłączenia dużej liczby rozszerzeń dzięki wtyczkom;
  • aktywna i stale rozwijająca się społeczność.

Wady:

  • nie ma bloku analitycznego;
  • niezbyt przyjazny interfejs użytkownika.

TeamCity

Rozwój komercyjny od JetBrains. Serwer jest dobry, ma prostą konfigurację i doskonały interfejs. Domyślna konfiguracja posiada dużą liczbę funkcji, a liczba dostępnych wtyczek stale rośnie.

Wymaga środowiska Java Runtime Environment (JRE) w wersji 8.

Wymagania sprzętowe serwera nie są krytyczne:

  • RAM - 3,2 GB;
  • procesor - dwurdzeniowy, 3,2 GHz;
  • kanał komunikacyjny o przepustowości 1 Gb/s.

Serwer pozwala na osiągnięcie wysokiej wydajności:

  • 60 projektów z 300 konfiguracjami kompilacji;
  • Alokacja 2 MB na dziennik kompilacji;
  • 50 agentów kompilacji;
  • możliwość pracy z 50 użytkownikami w wersji webowej i 30 użytkownikami w IDE;
  • 100 połączeń zewnętrznego VCS, zwykle Perforce i Subversion. Średni czas zmiany wynosi 120 sekund;
  • ponad 150 modyfikacji dziennie;
  • praca z bazą danych na jednym serwerze;
  • Ustawienia procesu serwera JVM: -Xmx1100m -XX:MaxPermSize=120m.

Wymagania agenta opierają się na działających zestawach. Głównym zadaniem serwera jest monitorowanie wszystkich podłączonych agentów i dystrybucja zestawów znajdujących się w kolejce do tych agentów w oparciu o wymagania kompatybilności, raportowanie wyników. Agenci są dostępni dla różnych platform i systemów operacyjnych oraz ze wstępnie skonfigurowanym środowiskiem.

Wszystkie informacje o wynikach kompilacji przechowywane są w bazie danych. Przede wszystkim jest to historia i inne podobne dane, zmiany VCS, agenci, kolejki kompilacji, konta użytkowników i uprawnienia. Baza danych nie zawiera wyłącznie dzienników kompilacji i artefaktów.

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

Instalacja dla Linuksa

Aby ręcznie zainstalować TeamCity z kontenerem serwletów Tomcat, powinieneś skorzystać z archiwum TeamCity: TeamCity .tar.gz. Pobierać możesz to stąd dostać.

tar -xfz TeamCity.tar.gz

/bin/runAll. sh [start|stop]

Na początku należy wybrać typ bazy danych, w której będą przechowywane dane montażowe.

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

Domyślna konfiguracja działa dalej localhost:8111/ z jednym zarejestrowanym agentem kompilacji działającym na tym samym komputerze.

Mocne strony TeamCity:

  • prosta konfiguracja;
  • przyjazny interfejs użytkownika;
  • duża liczba wbudowanych funkcji;
  • Usługa wsparcia;
  • istnieje RESTful API;
  • dobra dokumentacja;
  • dobre bezpieczeństwo.

Wady:

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

GoCD

Projekt open source wymagający środowiska Java Runtime Environment (JRE) w wersji 8 do instalacji i działania.

Wymagania systemowe:

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

agent:

  • RAM - co najmniej 128 MB, więcej znaczy lepiej;
  • procesor - co najmniej 2 GHz.

Serwer zapewnia działanie agentów i zapewnia wygodny interfejs dla użytkownika:

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

Etapy/Zadania/Zadania:

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

Instalacja dla Linuksa

echo "deb pobierz.gocd.org /” | sudo tee /etc/apt/sources.list.d/gocd.list

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

apt-get update

apt-get install -y openjdk-8-jre

apt-get zainstaluj 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 localhost: 8153.

Mocne strony GoCd:

  • otwarte źródło;
  • prosta instalacja i konfiguracja;
  • dobra dokumentacja;

  • Świetny interfejs użytkownika:

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

  • możliwość pokazania ścieżki instalacji GoCD krok po kroku w jednym widoku:

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

  • doskonałe przedstawienie struktury rurociągu:

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

  • GoCD optymalizuje przepływ pracy CD w najpopularniejszych środowiskach chmurowych, w tym Docker, AWS;
  • narzędzie umożliwia korygowanie problemów w rurociągu, w przypadku których istnieje śledzenie każdej zmiany od zatwierdzenia do wdrożenia w czasie rzeczywistym.

Wady:

  • potrzebny jest co najmniej jeden agent;
  • nie ma konsoli wyświetlającej wszystkie wykonane zadania;
  • aby wykonać każde polecenie, należy utworzyć jedno zadanie konfiguracji potoku;
  • Aby zainstalować wtyczkę należy przenieść plik .jar do /plugins/external i zrestartuj serwer;
  • stosunkowo mała społeczność.

Jako podsumowanie

To tylko trzy narzędzia, w rzeczywistości jest ich o wiele więcej. Wybór jest trudny, dlatego zdecydowanie trzeba zwrócić uwagę na dodatkowe aspekty.

Otwarty kod źródłowy narzędzia pozwala zrozumieć, co to jest, a także szybciej dodawać nowe funkcje. Ale jeśli coś nie zadziała, musisz zdać się tylko na siebie i pomoc społeczności. Płatne narzędzia zapewniają wsparcie, które czasami może mieć kluczowe znaczenie.

Jeśli bezpieczeństwo jest Twoim najwyższym priorytetem, warto skorzystać z narzędzia lokalnego. Jeśli nie, dobrym rozwiązaniem będzie wybranie rozwiązania SaaS.

I wreszcie, aby zapewnić naprawdę efektywny proces ciągłego wdrażania, należy sformułować kryteria, których specyfika pozwoli zawęzić zakres dostępnych narzędzi.

Skillbox poleca:

Źródło: www.habr.com

Dodaj komentarz