piątek, 4 października 2019

Jenkins: Przekazywanie parametrów do zadania

Jenkins pozwala na przekazywanie parametrów do zadań. Jest to bardzo przydatne wtedy gdy chcemy mieć uniwersalne zadanie np. do deploymentu na różne środowiska a tylko parametrem możemy ustalić na które środowisko można zrobić deployment. Możliwych typów parametrów jest kilka.
1. Wartość logiczna – prawda lub fałsz
2. Ciąg znaków wpisywanych (string)
3. Lista parametrów predefiniowanych wcześniej do wyboru
4. Plik z parametrami
Powyższe parametry można zdefiniować w konfiguracji zadania. Po zapisaniu zmian przycisk uruchamiający zadanie zmieni się z build na build with parameter. Po jego kliknięciu zostaniemy poproszeni o przekazanie określonych wcześniej parametrów. Parametry mogą przyjmować również wartości domyślne.

Wykorzystanie tych parametrów sprowadza się do sprawdzenia wartości zmiennych określających parametr w zadaniu.

Parametry do zadania można zdefiniować również w buildzie typu pipeline. Poniższy wpis dodaje trzy parametry force_release, version oraz branch które przyjmują ciąg znaków jako argumenty.

properties([ parameters([booleanParam(defaultValue: false, description: 'do not check last commit', name: 'force_release'),string(defaultValue: '0.0.1', description: 'release version', name: 'version', trim: false), string(defaultValue: 'dev', description: 'branch for releases', name: 'branch', trim: false)])])

Ustawione są również wartości domyślne.
Drobną niedogodnością ustawiania parametrów w pipeline jest to, że zadania musi być raz uruchomione, aby Jenkins mógł zaczytać te parametry przy pierwszym uruchomieniu.

Używanie zmiennych w ciągach znaków - scripted pipeline

Często jest potrzeba zbudowania jednego ciągu znaków z użyciem zmiennych. Dzięki temu kilka krótkich zmiennych możemy łączyć w zależności od potrzeb.

W Jenkinsie głównie używa się dwóch sposobów złączania

1. Złącza ciągów analogicznie jak w groovym

app_url = 'http://'+projekt+'.pl'+context

Powyższy przykład ilustruje nam użycie podejście groovy. Ciąg znaków zostanie przypisany do zmiennej app_url. Będzie składał się z następujących elementów:

'http://' – ciągu znaków podawanych w kodzie
+projekt+ - zmiennej projekt która została wcześniej zdefiniowana wcześniej jak zmienna
+ - ten znak oznaczaja z której strony zmienna będzie się łączyła z innymi ciągami znaków
'.pl' ciąg znaków podawany w kodzie
+context – zmienna context – zdefiniowana wcześniej w kodzie.
W tym przykładzie mamy jeden znak + ponieważ po tej zmiennej nie ma już kolejnych elementów do złączenia.
W tym podejściu używamy znaków ‘ apostrof do przekazywania ciągów znaków.

2. Podejście „bashowe”
app_url = "http://${projekt}.pl${context}"
W tym podejściu widać zasadniczą różnicę, cały budowany ciąg znaków jest ujęty w cudzysłów „”. Do zmiennych zdefiniowanych w pipeline odwołujemy się jak w bashu czyli używając znaków ${nazwa_zmiennej}