Co to jest Jenkins? Historia, architektura, rurociąg i korzyści
Opublikowany: 2020-05-01Zespoły, które chcą zintegrować różne etapy DevOps, mogą to zrobić poprzez ciągłą integrację. Dostępnych jest kilka narzędzi ułatwiających przeprowadzenie tej integracji. Jednym z najpopularniejszych z nich jest Jenkins. Jednak zanim zaczniesz działać i zaczniesz używać tego narzędzia, musisz zrozumieć, czym dokładnie jest, jak działa, jakie ma funkcje i jakie oferuje zalety w porównaniu z innymi podobnymi narzędziami.
Kiedy Jenkins został uruchomiony, było to tylko narzędzie do ciągłej integracji typu open source. Jednak po ostatnich aktualizacjach stał się narzędziem zdolnym do wykonywania dwóch zadań – ciągłej integracji i ciągłego dostarczania. Jest to teraz narzędzie, które pomaga również w organizowaniu wdrażania aplikacji. Ten blog ma na celu omówienie wszystkich szczegółów, które powinieneś wiedzieć o Jenkins, zanim zaczniesz używać go w swoich projektach IT.
Spis treści
Historia Jenkinsa
Tak jak mamy tyle ciekawych historii o rozwoju tak wielu technologii i narzędzi na przestrzeni lat, mamy też jedną dla Jenkinsa. Wraca do 2004 roku, Kohsuke Kawaguchi, twórca Jenkinsa, współpracował z Sun Microsystems jako programista Java.
Kawaguchi nie wiedział, że przyszłość ma dla niego coś wyjątkowego. W tym czasie Kawaguchi był zaangażowany w kilka projektów rozwojowych. Nie lubił psuć kompilacji z powodu błędu kodu. To skłoniło go do szukania czegoś, co mogłoby pomóc mu dowiedzieć się, czy kod będzie działał, czy nie, zanim zostanie przekazany do repozytorium.
Ta ciekawość doprowadziła do opracowania serwera automatyzacji o nazwie Hudson. W 2011 roku doszło do niesławnego sporu między niezależną społecznością open source Hudson a firmą Oracle, która teraz ma pod swoim parasolem Sun Microsystems.
Ten spór doprowadził do rozwidlenia, który został nazwany Jenkins. Zarówno Jenkins, jak i Hudson istnieli przez długi czas; jednak Jenkins był bardziej preferowanym wyborem. Projekt Hudson został zamknięty w styczniu 2020 r. Jenkins jest nadal aktywny.

Co to jest Jenkins?
Jenkins można określić jako narzędzie do automatyzacji używane przez zespoły DevOps, które chcą zapewnić ciągłą integrację w swoich projektach. Jest to oprogramowanie typu open source, które jest zbudowane w języku Java. Jest używany przez cały cykl rozwoju oprogramowania.
Nie tylko w rozwoju i testowaniu, ale także we wdrożeniu. Pozwala programistom na łatwe integrowanie zmian z ich projektami. Jenkins jest również używany do ciągłego dostarczania projektów oprogramowania.
Dowiedz się więcej: Rozwiązywanie scenariuszy w czasie rzeczywistym za pomocą DevOps
Jak działa ciągła integracja?
Ciągła integracja (CI) jest integralną częścią procesu tworzenia oprogramowania. Może składać się z wielu różnych zadań, w tym między innymi wykorzystania unikalnych funkcji w repozytorium, rozwoju funkcji i poprawek błędów.
Narzędzie ciągłej integracji, takie jak Jenkins, doskonale nadaje się do identyfikowania problemów z bieżącymi źródłami aplikacji i zapewnia szybką reakcję, sprawdzając proces integracji za pomocą zautomatyzowanych funkcji kompilacji i testowania.
Ciągła integracja wywodzi się z modelu programowania związanego z metodologią Agile. Koncepcję tę można jednak nadal stosować do wszystkich modeli programowania, które mają charakter iteracyjny.
Modele kaskadowe i inne tego typu podejścia do rozwoju również mogą czerpać korzyści z tego, co ma do zaoferowania ciągła integracja. CI często działa w połączeniu z ciągłym dostarczaniem (CD), aby dostarczać kod wykonywalny do produkcji w znacznie szybszym tempie i w sposób zautomatyzowany. Poniżej wymieniono typowe praktyki CI:
- Regularne wprowadzanie kodu
- Inscenizacja budowania
- Maszyna budująca dedykowana do integracji
- Ciągła informacja zwrotna
- Kategoryzacja testów programistów
Ciągła integracja może być udostępniana z dowolną częstotliwością, jaką uznasz za odpowiednią, biorąc pod uwagę Twój projekt i firmę. Tak więc firmy korzystające z CI mają więcej regularnych wydań niż te, które wykorzystują tradycyjne procesy tworzenia oprogramowania.
Coraz więcej firm zaczęło korzystać z CI z jednego prostego faktu – nawet najdrobniejsza zmiana w kodzie może dać początek nowej wersji. CI może dawać ciągłe informacje zwrotne podczas tworzenia oprogramowania.
Pomaga to zespołom DevOps pozbyć się błędów na każdym etapie rozwoju. Wykrywa również problemy na dość wczesnym etapie rozwoju. Dzięki temu problemy te są mniej uciążliwe, niezbyt złożone i łatwe do rozwiązania.
Przeczytaj: Najlepsze narzędzia DevOps na rynku
Jak działa ciągła dostawa?
Ciągłe dostarczanie jest częścią procesu tworzenia oprogramowania, która umożliwia kontynuowanie rozwoju w taki sposób, abyś zawsze był gotowy do wydania oprogramowania na produkcję. Oto kilka przypadków, w których ciągła dostawa okazuje się dodatkowo owocna:
1. Zespół DevOps zapewnia, że oprogramowanie jest gotowe do wdrożenia, nawet w trakcie opracowywania funkcji
2. Oprogramowanie jest gotowe do wdrożenia w całym cyklu tworzenia oprogramowania
3. Wdrażanie za pomocą przycisku jest rzeczywistością dla różnych wersji oprogramowania w różnych środowiskach na żądanie
Jak można osiągnąć ciągłą dostawę? Pierwszym wymaganiem jest, aby oprogramowanie było już w trakcie ciągłej integracji. Zespół programistów powinien następnie zbudować pliki wykonywalne i przeprowadzić na nich testy w celu wykrycia błędów lub błędów. Ponadto bardzo ważne jest testowanie plików wykonywalnych w różnych środowiskach produkcyjnych, aby upewnić się, że oprogramowanie jest gotowe do wysłania do produkcji w dowolnym momencie. W tym celu konieczne jest wdrożenie.
Automatyzacja Jenkinsa pozwala firmom na znaczne przyspieszenie procesu tworzenia oprogramowania. Jenkins jest w stanie integrować różne typy procesów cyklu życia oprogramowania, w tym budowanie, testowanie, wdrażanie i inne. Wtyczki są bardzo ważne dla zapewnienia ciągłej integracji. Jeśli chcesz dodać nowe narzędzie do Jenkinsa, najpierw musisz się upewnić, że zainstalowałeś do niego wtyczkę.
Przeczytaj: Pytania i odpowiedzi na wywiad z Jenkinsem
Co to jest potok Jenkinsa?
Potok Jenkins to kombinacja zadań, zadań lub zdarzeń, które są ze sobą połączone w sekwencji. Innymi słowy, jest to grupa wtyczek, które umożliwiają łatwą integrację i wdrożenie ciągłych potoków dostarczania. Rozszerzalna automatyzacja działa w celu wsparcia potoku w tworzeniu zarówno złożonych, jak i prostych potoków dostarczania w postaci kodu i za pomocą języka specyficznego dla domeny lub DSL.
Omówmy teraz trochę o ciągłych potokach dostaw i ich działaniu. Podstawową cechą potoku Jenkins jest to, że każde zdarzenie, zadanie lub zadanie, które posiada, jest zależne w taki czy inny sposób od jednego lub większej liczby tych zdarzeń, zadań lub zadań. Potoki ciągłego dostarczania obejmują różne stany, takie jak kompilacja, testowanie, wdrażanie, wydanie. Wszystkie te stany są ze sobą połączone.
Ciągły potok dostarczania to sekwencja, w której działają zdarzenia każdego z tych stanów. Jest to zautomatyzowane wyrażenie, które przetwarza procesy wymagane do uzyskania oprogramowania do kontroli wersji. Wszystkie zmiany wprowadzone w oprogramowaniu muszą przejść przez kilka złożonych procesów, zanim oprogramowanie zostanie wydane. Proces ten zapewnia również, że oprogramowanie jest tworzone w sposób powtarzalny i niezawodny oraz obejmuje wiele etapów testowania i wdrażania, przez które oprogramowanie przechodzi.
JenkinsFile to plik tekstowy używany do definiowania potoków Jenkins. JenkisFile jest często używany do implementacji potoków w postaci kodu, a cały ten proces jest definiowany za pomocą DSL. Możesz również użyć JenkinsFile, aby zapisać kroki, które należy wykonać, aby uruchomić potoki Jenkins. Poniżej wymieniono niektóre korzyści wynikające z używania JenkinsFile:

- Ułatwia przeglądanie kodu w potoku.
- Może pomóc w wykonywaniu żądań ściągnięcia dla wszystkich potoków, które utworzyłeś dla różnych gałęzi.
- Jest to jedyne źródło Twoich potoków, które mogą być modyfikowane przez różnych użytkowników.
- Może pomóc w przeprowadzeniu audytu w potoku Jenkins.
JenkinsFile jest definiowany za pomocą dwóch rodzajów składni
Składnia potoków deklaratywnych
Dzięki tej składni tworzenie potoków jest znacznie łatwiejsze. Posiada ugruntowaną hierarchię, która pomaga w tworzeniu potoków. Oferuje proste sposoby sprawowania kontroli nad każdym aspektem związanym z wykonywaniem potoków.
Skryptowa składnia potoku
Używa lekkiego executora i działa na wzorcu Jenkinsa. Ma własny zestaw zasobów, które wykorzystuje do konwersji potoków na polecenia atomowe. Jak widać z ich definicji, obie te składnie różnią się od siebie. Nie tylko to, ale są one nawet definiowane na różne sposoby.
Dlaczego powinieneś używać potoku Jenkins?
Jenkins automatyzuje ten proces tworzenia oprogramowania dzięki możliwościom ciągłej integracji. Możesz użyć różnych przypadków użycia, aby utworzyć wiele zadań automatyzacji, a następnie użyć potoku Jenkins, aby uruchomić je wszystkie. Poniżej wymieniono kilka powodów korzystania z potoku Jenkins:
- Ponieważ potok Jenkins jest zaimplementowany w postaci kodu, może mieć wielu użytkowników, którzy mogą edytować i wykonywać proces.
- Obsługuje projekty, które są większe niż zwykle. Możliwe jest uruchamianie wielu projektów jednocześnie lub używanie potoków w pętli.
- Są wytrzymałe. Nie musisz się martwić, jeśli Twój serwer uruchomi się ponownie w nieprzewidzianych okolicznościach. Potok Jenkins zostałby automatycznie wznowiony.
- Proces potoku można wstrzymać i nie można go wznawiać, dopóki nie otrzymasz danych wejściowych użytkownika.
Architektura Jenkinsa
W tej sekcji skoncentrujemy naszą dyskusję na tym, jak Jenkins pomaga zarówno deweloperom, jak i testerom? Omówmy ciągłą integrację Jenkinsa, aby to zrozumieć.
Na początku programiści wprowadzają w kodzie źródłowym wszystkie zmiany, które chcą. Ten kod jest przechowywany w repozytorium Git. Modyfikacja następuje po zatwierdzeniu tych zmian. Serwer Jenkins wykonuje swoją pracę i śledzi zmiany dokonywane w plikach przechowywanych w repozytorium. Zmiany wprowadzone przez programistów są wykrywane przez serwer Jenkins. Jenkins następnie pobiera te zmiany i rozpoczyna pracę nad nową wersją oprogramowania opartą na tych zmianach,
Zainteresowany zespół otrzyma powiadomienie, jeśli kompilacja się nie powiedzie. Z drugiej strony, jeśli kompilacja się powiedzie, Jenkins wdraża ją na serwerze testowym. Deweloperzy są powiadamiani o wynikach tworzenia i testowania kompilacji. Ten cykl się powtarza.
Teraz, gdy rozumiemy, jak działa Jenkins, łatwiej będzie nam dostrzec różnicę w jego działaniu i sposobach, które były używane do wydawania i wdrażania przed nim.
Więc zanim Jenkins wysunął się na pierwszy plan, proces obejmował budowę i testowanie pełnego kodu źródłowego. Lokalizowanie i naprawianie błędów i błędów wcale nie było łatwym zadaniem, które opóźniało dostarczanie oprogramowania. Deweloperzy musieli długo czekać na wyniki testów. Kiedyś wdrażanie odbywało się ręcznie.
Po Jenkinsie wszystkie zmiany w kodzie źródłowym są testowane po ich wprowadzeniu. Deweloperzy nie muszą przechodzić przez cały kod źródłowy w celu zlokalizowania błędów i błędów. Wprowadzanie wydań kompilacji jest teraz znacznie częstsze. Deweloperzy są informowani o wynikach testów wszystkich zmian i zatwierdzeń. Po zatwierdzeniu zmian serwer Jenkins może rozpocząć wykonywanie innych procesów.
Architektura rozproszona Jenkins
Jenkins zarządza kompilacjami za pomocą architektury master-slave. Jednostki master i slave komunikują się ze sobą za pomocą protokołu IP/TCP. Oto mały plik do pobrania, jak to wszystko działa.
Mistrz Jenkinsa
To jest główny serwer Jenkinsa. Obsługuje szereg zadań, które obejmują między innymi planowanie zadań kompilacji, rejestrowanie i prezentowanie wyników kompilacji, wysyłanie kompilacji do niewolników w celu wykonania, monitorowanie wszystkich niewolników w trybie offline i online oraz inne. Mistrz Jenkins jest w stanie bezpośrednio wykonywać prace budowlane.
Jenkins niewolnik
Działa na zdalnym serwerze. Serwer Jenkins spełnia żądania mastera Jenkinsa i jest kompatybilny ze wszystkimi systemami operacyjnymi. Prace budowlane wysłane przez master są wykonywane przez slave. Projekt można odpowiednio skonfigurować, aby wybrać konkretną maszynę podrzędną.
Korzyści Jenkinsa
1. Jenkins to narzędzie o otwartym kodzie źródłowym, które jest niezwykle łatwe w instalacji i obsłudze. Nie potrzebujesz żadnych dodatkowych komponentów, aby z niego korzystać
2. Jest bezpłatny i można go używać na różnych platformach, takich jak Windows, Linux, macOS i inne
3. Jest szeroko stosowany, więc znalezienie wsparcia w społecznościach internetowych nie jest dużym problemem
4. Jenkins automatyzuje wszystkie prace integracyjne. Problemy z integracją są rzadkie, więc pomaga to zaoszczędzić czas i pieniądze w całym cyklu życia projektu.
5. Łatwo go konfigurować, rozszerzać i modyfikować. Pozwala na błyskawiczne generowanie testów oraz budowanie, automatyzację i wdrażanie kodu na różnych platformach
6. Jenkins można skonfigurować tak, aby poprawnie uruchamiał koncepcje CI i CD
7. Może łatwo wykrywać i naprawiać problemy. Oprogramowanie jest zawsze gotowe do nagłego wydania
8. Obsługuje różne wtyczki, co zapewnia większą elastyczność
9. Pomaga w bardzo wczesnym wykrywaniu błędów, oszczędzając w ten sposób programistom wiele czasu i ciężkiej pracy
Zwiększ produktywność dzięki wtyczkom Jenkins
Oto kilka najpopularniejszych wtyczek używanych przez programistów.

1. Wtyczka do generowania zadań
Utrzymanie zadań projektowych w rosnącej lub większej organizacji jest trochę trudne, tym bardziej, że programiści często pracują nad różnymi gałęziami i wydaniami. Chociaż jesteś gotowy pozwolić programistom na samodzielne tworzenie miejsc pracy, nie masz pewności, czy będą w stanie sprostać standardom firmy. To duży dylemat. Ta wtyczka pozwala zdefiniować szablony, których programiści mogą używać do tworzenia miejsc pracy. Możesz wyłączyć dostęp do konfiguracji szablonu za pomocą wtyczki autoryzacji opartej na rolach.
2. Wtyczka globalnych statystyk kompilacji
Znajomość aktualnej wydajności, możliwości i wykorzystania jest bardzo ważna, aby przygotować się na wymagania systemowe lub planowanie wydajności. Powinieneś zdawać sobie sprawę z liczby kompilacji, które odbywają się regularnie. Musisz także znać czas potrzebny na wydanie kompilacji. Ta wtyczka zapewnia wszystkie niezbędne informacje wymagane do odpowiedzi na wszystkie te pytania.
3. Konstruktor żądań pull GitLab/GitHub
Możesz użyć tego szablonu, aby zautomatyzować proces przeglądu kodu w GitLab/GitHub do wyższego niż zwykle poziomu. W przypadku każdego żądania ściągnięcia możesz oczekiwać, że ta wtyczka nie tylko uruchomi kompilację, ale także wyniki kompilacji i udostępni stan z żądaniem ściągnięcia lub zbierze ważne analizy statyczne. Ta wtyczka wiele mówi o kodzie, który należy scalić. Możliwe jest również zdefiniowanie automatycznego łączenia w niektórych okolicznościach za pomocą tej wtyczki.
Wniosek
Ten blog zawiera dobre wyobrażenie o tym, jak działa Jenkins i jak można go wykorzystać do realizacji różnych pomysłów projektowych za pomocą CI/CD. Jest to obecnie jedno z najbardziej preferowanych narzędzi DevOps, które bardzo ułatwia pracę dzięki efektywnemu interfejsowi i wtyczkom.
Jeśli chcesz dowiedzieć się więcej o tworzeniu pełnego stosu, zapoznaj się z dyplomem PG upGrad i IIIT-B w zakresie pełnego tworzenia oprogramowania, który jest przeznaczony dla pracujących profesjonalistów i oferuje ponad 500 godzin rygorystycznych szkoleń, ponad 9 projektów i zadań, Status absolwentów IIIT-B, praktyczne, praktyczne projekty zwieńczenia i pomoc w pracy z najlepszymi firmami.