Jenkins Pipelines Tips und Tricks
Last updated
Was this helpful?
Last updated
Was this helpful?
In geht es um die Konzepte ... hier geht es im Code-Snippets und Erklärungen dazu.
Auch hier lassen sich Shell-Skripte per sh
einbinden ... an vielen Stellen - auch in den environment
-Abschnitten. Für kleine Snippets geht das so:
Umgebungsvariablen von Jenkins (z. B.
BRANCH_NAME
) lassen sich hier einfach per Shell-Resolving auflösen.
Verwendet man in dieser einfachen Form Anführungszeichen in der Payload, so muß man diese quoten:
Bei größeren/komplexeren Skripten kann man es auch per
ACHTUNG: in obigem Beispiel gibt es Anführungszeichen auf zwei Ebenen (auf der Ebene 2 muß das Anführungszeichen NICHT gequotet werden). Ebene 1:
sh """
- hierbei handelt es sich um die . Ebene 2:echo "Du willst jetzt den branch ${BRANCH_NAME} bauen"
- hierbei handelt es sich um die Shell-Double-Quotes. Auch mit den einfachen Anführungszeichen funktioniert die Ersetzung vonBRANCH_NAME
inecho 'Du willst jetzt den branch ${BRANCH_NAME} bauen'
... aber nur wenn man die Groovy-Triple-Double-Quotes verwendet. Verwendet man hingegen die , so funktioniert die Ersetzung vonBRANCH_NAME
nicht.
Sollen die Skripte auch noch einen Rückgabewert haben (im folgenden Beispiel die Anzahl der *.log
Dateien), so kann das so erfolgen (hier sogar mit der Kennzeichnung des Shell-Typs "Bash"):
ACHTUNG: alles, was auf stdout geschrieben wird kommt dann in die Variable
numberLogFiles
(inkl. Zeilenumbrüche). Per Default ist der Datentyp ein String ... kann man aber auch noch peras Integer
anpassen, so daß die Groovy VariablenumberLogFiles
ein Integer ist.
Macht man hingegen folgendes (Verwendung der Shell-Variable _counter
):
dann muß man das Dollar quoten - bei einer Groovy-Variablen oder einer Umgebungsvariablen hingegen nicht. Das macht es recht tricky, wenn man sich die Fallstricke mühsam erarbeiten muß :-(
REGEL:
in Shell-Skripten können Groovy-Variablen und Umgebungsvariablen mit einfachem ${variable}
resolved werden ... Shell-Variablen müssen gequoted werden \${variable}
.