Warunki wstępne

Zainstaluj Jenkinsa



Co to jest biblioteka współdzielona?

Biblioteka współdzielona w Jenkins to zbiór skryptów Groovy do wielokrotnego użytku który może być używany przez wiele zadań Jenkins. Umożliwia to współdzielenie kodu i funkcjonalności między różnymi zadaniami, co może sprawić, że Twoje kompilacje będą wydajniejsze i łatwiejsze w utrzymaniu.

Aby zrozumieć koncepcję bibliotek współdzielonych, rozważmy przykład czasu rzeczywistego. Wyobraź sobie, że masz wiele potoków Jenkinsa, które wymagają wspólnego zestawu funkcji do interakcji z systemem kontroli wersji, takim jak Git. Zamiast powielać kod związany z Git w każdym potoku, możesz utworzyć bibliotekę współdzieloną, która zawiera niezbędne operacje Git.

Struktura folderów biblioteki współdzielonej

  1. Katalog src ma strukturę standardowego projektu Java. Oznacza to, że możesz użyć instrukcji import do importowania klas z innych katalogów w katalogu src.
  2. Katalog vars to specjalny katalog zawierający zmienne globalne zdefiniowane w bibliotece współdzielonej. Dostęp do tych zmiennych można uzyskać z dowolnego zadania Jenkins, które importuje bibliotekę współdzieloną.
  3. Katalog resources jest zwykłym katalogiem, w którym mogą znajdować się pliki dowolnego typu. Jednak zwykle jest używany do przechowywania zasobów statycznych używanych przez bibliotekę współdzieloną.

Kroki konfiguracji biblioteki współdzielonej w Jenkins

Utwórz repozytorium w dowolnym narzędziu do zarządzania kodem źródłowym.

Tutaj używamy GitHub.

Sklonuj nowo utworzone repozytorium

git clone https://github.com/tejashreeSalvi/shared-lib.git

Utwórz strukturę folderów

cd shared-lib

# create a master branch (optional)
git branch master
git checkout master

# create vars directory
mkdir vars
cd vars

Stworzyliśmy katalog vars, w którym będziemy pisać naszą funkcję wielokrotnego użytku.

Rozważmy przykład czasu rzeczywistego. Wyobraź sobie, że masz wiele potoków Jenkinsa, które wymagają wspólnego zestawu funkcji do interakcji z systemem kontroli wersji, takim jak Git. Zamiast powielać kod związany z Git w każdym potoku, możesz utworzyć bibliotekę współdzieloną, która zawiera niezbędne operacje Git.

Tworzenie pierwszej biblioteki współdzielonej do kasy scm.

checkoutCode.groovy

def call(String repoUrl, String branch){
   def workingDir = "${env.WORKSPACE}"
   sh "git clone ${repoUrl} ${workingDir}"
   sh "git checkout ${branch}"
   return workingDir
}
  1. Metoda call, która jest specjalną metodą we współdzielonej bibliotece Jenkinsa, która umożliwia bezpośrednie wywołanie funkcji z potoku Jenkinsa.
  2. ${env.WORKSPACE} przypisuje zmienną środowiskową Jenkinsa WORKSPACE
  3. sh służy do wykonania polecenia powłoki w celu sklonowania repozytorium w workingDir i checkout(switch) do określonego branch .
  4. ścieżka workingDir jest zwracana do Jenkins Pipeline.

Tę funkcjonalność można ponownie wykorzystać w potokach Jenkinsa, które importują bibliotekę współdzieloną i korzystają z niej.

Zatwierdź zmiany w repozytorium Git.

git add .
git commit -m "checkout scm fucntionality added"
git push origin master

Kod został pomyślnie przesłany i dostępny w zdalnym repozytorium.

Skonfiguruj globalne biblioteki potoków (biblioteka udostępniona) w Jenkins

Zaloguj się do Jenkinsa.

Go to Manage JenkinsConfigure System

Następny krok: wyszukaj Global Pipeline Libraries i skonfiguruj parametry.

  1. Wpisz nazwę biblioteki udostępnionej: shared-lib
  2. Ustaw domyślną gałąź: master (Jenkins weźmie pod uwagę gałąź domyślną, jeśli podczas importowania biblioteki współdzielonej nie określono żadnej gałęzi).

3. Skonfiguruj repozytorium, które utworzyliśmy dla Biblioteki współdzielonej: https://github.com/tejashreeSalvi/shared-lib.git



4. Skonfiguruj poświadczenia, jeśli Twoje repozytorium jest prywatne

5. Kliknij Save

Wow! zakończyliśmy część konfiguracyjną.

Użyjmy biblioteki współdzielonej w potokach

Aby zaimportować bibliotekę, używamy adnotacji @Library i określamy nazwę biblioteki zdefiniowaną w konfiguracji globalnej Jenkins.

Utwórz potok Jenkins

Przejdź do New Item i podaj odpowiednią nazwę potoku first-shared-lib-pipeline oraz typ pipeline

Kliknij OK

Skrypt importujący bibliotekę współdzieloną

Przejdź do Pipeline Script → Dodaj skrypt i Save

@Library("shared-lib@master") _

pipeline {
    agent any
    stages {
        stage('Code Checkout') {
            steps {
                script {
                  def workingDir = checkoutCode("https://github.com/tejashreeSalvi/django-todo-cicd.git", "develop")
                  echo $workingDir
                }
            }
        }
    }
}
  1. @Library("shared-lib@master") _: spowoduje to zaimportowanie biblioteki współdzielonej o nazwie „shared-lib” do gałęzi „master”. Biblioteka jest udostępniana do użytku w tym potoku Jenkins.

2. def workingDir = checkoutCode("https://github.com/tejashreeSalvi/django-todo-cicd.git", "develop"): Ta linia wywołuje funkcję checkoutCode z biblioteki współdzielonej, przekazując adres URL repozytorium i nazwę oddziału.

Dlatego możesz utworzyć wiele potoków i użyć funkcji checkoutCode z biblioteki współdzielonej, aby pobrać scm. Zamiast ciągle od nowa pisać blok kodu we wszystkich potokach Jenkinsa.

Zbuduj rurociąg.

Przejdź do first-shared-lib-pipeline → Kliknij Build Now

Kompilacja zostanie uruchomiona. Sprawdź dane wyjściowe kompilacji w konsoli.

Jeśli przyjrzysz się uważnie, zauważysz, że biblioteka współdzielona została pomyślnie załadowana.

Korzystając z biblioteki współdzielonej i wywołując funkcję checkoutCode, ten skrypt potoku wykonuje operację pobierania kodu poprzez klonowanie określonego repozytorium i przełączanie do gałęzi develop.

Hurra! Stworzyliśmy nasz pierwszy kod wielokrotnego użytku, korzystając ze Wspólnej Biblioteki.

Kiedy używać, a kiedy nie używać Biblioteki współdzielonej.

Otóż ​​to! Poznaliśmy podstawy Biblioteki współdzielonej. Mam nadzieję, że wykorzystasz go w swoim następnym projekcie.

Dodaj trochę klaśnięć, jeśli spodobał Ci się artykuł 👏

Obserwuj po więcej takich treści ❤

Połącz się ze mną na LinkedIn.