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
- Katalog
src
ma strukturę standardowego projektu Java. Oznacza to, że możesz użyć instrukcjiimport
do importowania klas z innych katalogów w katalogusrc
. - 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ą. - 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 }
- Metoda
call
, która jest specjalną metodą we współdzielonej bibliotece Jenkinsa, która umożliwia bezpośrednie wywołanie funkcji z potoku Jenkinsa. ${env.WORKSPACE}
przypisuje zmienną środowiskową JenkinsaWORKSPACE
sh
służy do wykonania polecenia powłoki w celu sklonowania repozytorium wworkingDir
i checkout(switch) do określonegobranch
.- ś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 Jenkins
→ Configure System
Następny krok: wyszukaj Global Pipeline Libraries
i skonfiguruj parametry.
- Wpisz nazwę biblioteki udostępnionej:
shared-lib
- 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 } } } } }
@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.