Integracja Jenkins z Git - przydatna dla każdego specjalisty DevOps



Ten blog omawia integrację Git z Jenkins. Omówiono również zalety integracji Git z Jenkins wraz z wersją demonstracyjną.

jest z pewnością niekompletny bez Jenkinsa. Jenkins wraz z Git to wspaniałe połączenie. W tym artykule omówię integrację Jenkins Git i jej zalety. Wskazówki, które zamierzamy omówić, są następujące:

Zacznijmy więc od naszego pierwszego tematu.





Co to jest Git - dlaczego Git Powstała?

Wszyscy wiemy, że „potrzeba jest matką wszystkich wynalazków”. Podobnie pojawił się Git, aby spełnić pewne potrzeby, z którymi borykali się deweloperzy przed Gitem. Więc cofnijmy się o krok, aby dowiedzieć się wszystkiego o systemach kontroli wersji (VCS) i o tym, jak powstał Git.

Kontrola wersji to zarządzanie zmianami w dokumentach, programach komputerowych, dużych witrynach internetowych i innych zbiorach informacji.



Istnieją dwa rodzaje VCS:

  • Scentralizowany system kontroli wersji (CVCS)

  • Rozproszony system kontroli wersji (DVCS)



Scentralizowany VCS

Scentralizowany system kontroli wersji (CVCS) wykorzystuje centralny serwer do przechowywania wszystkich plików i umożliwia współpracę zespołową. Działa na pojedynczym repozytorium, do którego użytkownicy mają bezpośredni dostęp do centralnego serwera.

Zapoznaj się z poniższym diagramem, aby uzyskać lepszy obraz CVCS:

wielokrotne dziedziczenie w Javie z przykładem

Repozytorium na powyższym schemacie wskazuje serwer centralny, który może być lokalny lub zdalny, który jest bezpośrednio połączony z każdą stacją roboczą programisty.

Każdy programista może wyodrębnić lub aktualizacja swoje stacje robocze z danymi znajdującymi się w repozytorium. Mogą również wprowadzać zmiany w danych lub popełnić do repozytorium. Każda operacja jest wykonywana bezpośrednio w repozytorium.

Mimo że utrzymywanie pojedynczego repozytorium wydaje się całkiem wygodne, ma kilka poważnych wad. Niektórzy z nich są:

  • Nie jest dostępny lokalnie, co oznacza, że ​​zawsze musisz mieć połączenie z siecią, aby wykonać jakąkolwiek czynność.

  • Ponieważ wszystko jest scentralizowane, w każdym przypadku awaria lub uszkodzenie centralnego serwera spowoduje utratę wszystkich danych projektu.

W tym miejscu Distributed VCS rozwiązuje problem.

Rozproszony VCS

Systemy te niekoniecznie polegają na centralnym serwerze do przechowywania wszystkich wersji pliku projektu.W Distributed VCS każdy współautor ma lokalną kopię lub „klon” głównego repozytorium. Tutaj każdy posiada własne repozytorium lokalne, które zawiera wszystkie pliki i metadane obecne w głównym repozytorium.

Zrozumiesz to lepiej, odwołując się do poniższego diagramu:

Jak widać na powyższym diagramie, każdy programista samodzielnie utrzymuje lokalne repozytorium, które w rzeczywistości jest kopią lub klonem centralnego repozytorium na jego dysku twardym. Mogą zatwierdzać i aktualizować swoje lokalne repozytorium bez żadnych zakłóceń.

Mogą aktualizować swoje lokalne repozytoria nowymi danymi z serwera centralnego za pomocą operacji zwanej „ Ciągnąć ”I wpływać na zmiany w głównym repozytorium za pomocą operacji o nazwie„ Pchać ”Z lokalnego repozytorium.

Spróbujmy teraz dowiedzieć się o definicji Git.

  • Git to rozproszone narzędzie do kontroli wersji, które obsługuje rozproszone nieliniowe przepływy pracy, zapewniając gwarancję danych do tworzenia wysokiej jakości oprogramowania. Narzędzia takie jak Git umożliwiają komunikację między programistą a zespołem operacyjnym.

  • Zwykle, gdy tworzysz duży projekt, masz ogromną liczbę współpracowników. Dlatego bardzo ważna jest komunikacja między współpracownikami podczas wprowadzania zmian w projekcie.

  • Komunikaty o zatwierdzaniu w Git odgrywają bardzo ważną rolę w komunikacji między zespołem. Oprócz komunikacji, najważniejszym powodem używania Gita jest to, że zawsze masz przy sobie stabilną wersję kodu.

  • Dlatego Git odgrywa kluczową rolę w odnoszeniu sukcesów w DevOps.

Co to jest Jenkins?

Jenkins to narzędzie do automatyzacji typu open source napisane w języku Java z wtyczkami zbudowanymi na potrzeby ciągłej integracji. Jenkins jest używany do tworzenia i testowania projektów oprogramowania, co ułatwia programistom integrację zmian w projekcie i ułatwia użytkownikom uzyskanie nowej kompilacji. Umożliwia również ciągłe dostarczanie oprogramowania poprzez integrację z wieloma technologiami testowania i wdrażania.

Dzięki Jenkins organizacje mogą przyspieszyć proces tworzenia oprogramowania dzięki automatyzacji. Jenkins integruje wszelkiego rodzaju procesy cyklu rozwojowego, w tym tworzenie, dokumentowanie, testowanie, tworzenie pakietów, etap, wdrażanie, analizę statyczną i wiele innych.

Jenkins osiąga ciągłą integrację za pomocą wtyczek. Wtyczki umożliwiają integrację różnych etapów DevOps. Jeśli chcesz zintegrować określone narzędzie, musisz zainstalować wtyczki dla tego narzędzia. Na przykład Git, projekt Maven 2, Amazon EC2, wydawca HTML itp.

Zalety Jenkins to:

  • Jest to narzędzie typu open source z dużym wsparciem społeczności.

  • Zbyt łatwa instalacja.

  • Posiada ponad 1000 wtyczek ułatwiających pracę. Jeśli wtyczka nie istnieje, możesz ją zakodować i udostępnić społeczności.

  • To jest bezpłatne.

  • Jest zbudowany w Javie, dzięki czemu jest przenośny na wszystkie główne platformy.

Teraz wiesz, jak Jenkins pokonuje tradycyjne wady SDLC. Poniższa tabela przedstawia porównanie „Przed i po Jenkinsie”.

Przed JenkinsemPo Jenkinsie
Cały kod źródłowy został zbudowany, a następnie przetestowany. Lokalizowanie i naprawianie błędów w przypadku niepowodzenia kompilacji i testów było trudne i czasochłonne, co z kolei spowalnia proces dostarczania oprogramowania.Każde zatwierdzenie dokonane w kodzie źródłowym jest budowane i testowane. Tak więc, zamiast sprawdzać cały kod źródłowy, programiści muszą skupić się tylko na konkretnym zatwierdzeniu. Prowadzi to do częstych nowych wersji oprogramowania.
Deweloperzy muszą poczekać na wyniki testówProgramiści znają wynik testu każdego zatwierdzenia wykonanego w kodzie źródłowym podczas uruchamiania.
Cały proces jest ręcznyMusisz tylkoZatwierdź zmiany w kodzie źródłowym, a Jenkins zautomatyzuje resztę procesu za Ciebie.

Dlaczego Jenkins i Git są używane razem?

Jak wspomniano wcześniej, Udać się jest menedżerem kontroli źródła. W tym miejscu przechowujesz kod źródłowy do śledzenia wszystkich zmian w kodzie, które zachodzą w czasie, i do ustalania wersji bazowych, gdy są gotowe do wydania.

Jenkins z drugiej strony jest rozwiązaniem zapewniającym ciągłą integrację. Został opracowany w celu zautomatyzowania większości zadań, które programista musi wykonać podczas tworzenia nowej aplikacji (kontrola jakości kodu, budowanie, archiwizacja artefaktów kompilacji, testowanie integracji, wdrażanie w różnych środowiskach itp.) Bez rozwiązania CI programista musi spędzać dużo czasu wykonując te powtarzalne nieproduktywne zadania.

Zalety:

  • Git i Jenkins są bardzo potężne, ale z wielką mocą wiąże się wielka odpowiedzialność. Dość często uzasadnia się niepotrzebną kwotę komplikacje w potoku kompilacji po prostu dlatego, że możesz.
  • Chociaż Jenkins ma wiele fajnych sztuczek w rękawie, łatwo jest wykorzystać funkcje Gita, ponieważ sprawia, że ​​zarządzanie wydaniami i znacznie łatwiejsze śledzenie błędów z biegiem czasu.
  • Możemy to zrobić, uważając na wersje kodu, które tworzymy i odpowiednio je tagując. To utrzymuje informacje związane z wydaniem blisko kodu , w przeciwieństwie do polegania na numerach kompilacji Jenkinsa lub innych pseudonimach.
  • Ochrona gałęzi Git zmniejsza ryzyko błędu ludzkiego , a automatyzacja jak największej liczby zadań zmniejsza częstotliwość, z jaką musimy dręczyć (lub czekać) tych ludzi.

Przykład:

Weźmy na przykład nową funkcję w aplikacji internetowej. Deweloper zostanie zidentyfikowany i przypisany do zadania, pobierze istniejący kod z kontroli źródła - powiedzmy, Git, wprowadza zmiany, przeprowadza testy jednostkowe, ręcznie zapewnia jakość kodu i sprawdza nowy kod z powrotem w Git.

Następnie musi zbudować kod, wdrożyć go w instancji integracyjnej, przeprowadzić testy integracyjne, a gdy zmiana będzie zadowalająca, zgłosić żądanie wdrożenia produkcyjnego. Gdybyśmy tylko mieli stronnika zajmującego się testowaniem, budowaniem, kontrolą jakości i wdrażaniem, kiepski programista mógłby lepiej skoncentrować się na tym, w czym jest naprawdę dobry - wdrażaniu i ulepszaniu logiki funkcji.

Ten stronnik to Jenkins. Działa jako koordynator, który uruchamia wszystkie te działania po sprawdzeniu zmiany w kontroli źródła (Git), a tym samym zapewnia szybką informację zwrotną dla programisty, czy wprowadzone przez niego zmiany są wystarczająco dobre do wdrożenia produkcyjnego, czy nie.Jest to niezwykle elastyczny, open source i ma mnóstwo wtyczek, które mogą zrobić prawie wszystko, co chcesz.

Próbny

Tutaj zobaczymy, jak zintegrować Git z Jenkins. Jest 5 kroków, które musisz wykonać:

1. Utwórz przykładowy program:

Możesz utworzyć dowolny przykładowy program, taki jak Java lub Python lub dowolny inny program. Tutaj napiszemy prosty Program w Pythonie który drukuje Hello, World!

2. Utwórz zadanie Jenkins:

  • Tutaj najpierw musisz uruchom Jenkins za pomocą wiersza polecenia.

  • W tym celu musisz najpierw przejść do lokalizacji Jenkins w systemie i użyć polecenia java -jar jenkins.war

  • Po uruchomieniu tego polecenia otwórz przeglądarkę internetową i przejdź do strony głównej Jenkinsa, używając linku localhost: 8080 . To jest domyślny numer portu.

  • Otwórz stronę główną Jenkinsa przez wprowadzenie nazwy użytkownika i hasła.

  • Aby utworzyć projekt, kliknij Nowa pozycja i wejdź do Nazwa Projektu i wybierz Projekt freestyle . Kliknij OK.

3. Dodaj ten program do Github:

  • Otwórz git bash w systemie. Nawigować do lokalizacji programu. Zainicjuj puste repozytorium za pomocą polecenia git init .

  • Użyj polecenia git add. aby dodać plik do obszaru przemieszczania z katalogu roboczego.

  • Teraz dodaj plik do lokalnego repozytorium za pomocą polecenia git commit -m “plik demo.py dodany” .

  • Teraz musisz Pchać ten plik do zdalnego repozytorium. Aby to zrobić, przejdź do swojego konta GitHub i utwórz nowe repozytorium publiczne. Teraz skopiuj lokalizację tego repozytorium i przejdź do terminala git bash. Tutaj wpisz polecenie git remote add origin . Ponieważ masz teraz połączenie ze zdalnym repozytorium, możesz teraz przesłać tam swój kod za pomocą polecenia git push -u wzorzec pochodzenia. Aby to sprawdzić, przejdź do konta GitHub i odśwież stronę. Zobaczysz dodany plik.

4. Dodaj wtyczkę Git w Jenkins:

  • Na stronie głównej Jenkins przejdź do Zarządzaj Jenkins .

  • Następnie kliknij Zarządzaj wtyczkami . Tutaj sprawdź, czy wtyczka Git jest zainstalowana w sekcji. Jeśli nie jest dostępny tutaj, wyszukaj go w dostępnej sekcji i pobierz.

5. Skonfiguruj zadanie Jenkins, aby wyzwolić kompilację:

  • Przejdź do projektu w Jenkins, który utworzyliśmy w kroku 2. Tutaj, w sekcji Zarządzanie kodem źródłowym, wybierz git i wprowadź łącze do repozytorium publicznego, które utworzyłeś w kroku 3. Następnie w Sekcja Build Triggers , Kliknij Opcja odpytywania SCM . Tutaj, w części Harmonogram, musisz wprowadzić pięć gwiazdek oddzielonych spacją. To nic innego jak składnia cron do twojej pracy. Oznacza to, że Jenkins będzie co minutę sprawdzać, czy w kodzie źródłowym nie ma zmian, a jeśli nastąpią jakiekolwiek zmiany, uruchomi kompilację Jenkinsa.

  • Kliknij Zastosować a potem dalej Zapisać . Następnie na stronie głównej projektu kliknij Buduj teraz . Spowoduje to uruchomienie projektu i na wyjściu konsoli zobaczysz, jak program wyświetla stan zadania Jenkins. Jeśli wszystko jest w porządku, wyświetli się jako Sukces .

    liczby Fibonacciego c ++

Tak więc odbywa się integracja Jenkins Git. Tym samym dotarliśmy do końca tego artykułu na temat integracji Jenkins z Git. Mam nadzieję, że podobał Ci się ten artykuł.

Teraz, kiedy zrozumiałeś, co Integracja Jenkins z Git jest, sprawdź to autorstwa Edureka, zaufanej firmy zajmującej się edukacją online, z siecią ponad 250 000 zadowolonych uczniów rozsianych po całym świecie. Szkolenie Edureka DevOps Certification Training pomaga uczniom zrozumieć, czym jest DevOps i zdobyć wiedzę na temat różnych procesów i narzędzi DevOps, takich jak Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack i GIT do automatyzacji wielu kroków w SDLC.

Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy, a my skontaktujemy się z Tobą