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).
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”.
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.
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:
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.
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.
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:
Etapy/Zadania/Zadania:
Instalacja dla Linuksa
echo "deb pobierz.gocd.org /” | sudo tee /etc/apt/sources.list.d/gocd.list
możliwość pokazania ścieżki instalacji GoCD krok po kroku w jednym widoku:
doskonałe przedstawienie struktury rurociągu:
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.