Dies ist eine alte Version des Dokuments!
LU13a - Variabeln im Jenkinsfile
Die Verwendung von Variablen in Jenkinsfile ist manchmal nicht intuitiv, weil zwei unterschiedliche Interpreter im Spiel sind
- Groovy/Jenkins: Interpretiert Env-Variablen und echte Groovy-Variablen
- Shell/Bash: Interpretiert Env-Variablen und echte Shell-Variablen
Diesbezüglich können folgende Tabelle helfen.
Multiline-Double-Quotation
Variablen innerhalb von Double-Quotations werden durch Groovy interpretiert.
| Variablen-Art | Schreibweise | Kommentar |
|---|---|---|
| Jenkins/env var | sh """ PUBLIC_URL=/projects/${PROJECT_NAME}/${BRANCH_NAME} \ """ | ✅ Durch Groovy interpretiert |
| Jenkins/env var | sh """ -e POSTGRES_USER=$DB_USER """ | ✅ Durch Groovy interpretiert |
| Echte Groovy-Variable | sh """ ${scannerHome}/bin/sonar-scanner \ """ | ✅ Durch Groovy interpretiert |
| Echte Groovy-Variable | sh """ $scannerHome/bin/sonar-scanner \ """ | ✅ Durch Groovy interpretiert |
| Echte Shell-Variable | sh """ if [ "\${TABLE_EXISTS}" = "" ]; then """ | ⚠️ Dollar muss escaped werden, damit Shell anstatt Groovy interpretiert |
| Echte Shell-Variable | sh """ if [ "\$TABLE_EXISTS" = "" ]; then """ | ⚠️ Dollar muss escaped werden, damit Shell anstatt Groovy interpretiert |
Multiline-Single-Quotation
Variablen innerhalb von Single-Quotations werden nicht durch Groovy interpretiert, sondern erst durch die Shell.
| Variablen-Art | Schreibweise | Kommentar |
|---|---|---|
| Jenkins/env var | sh ''' PUBLIC_URL=/projects/${PROJECT_NAME}/${BRANCH_NAME} \ ''' | ✅ Durch Shell interpretiert |
| Jenkins/env var | sh ''' -e POSTGRES_USER=$DB_USER """ | ✅ Durch Shell interpretiert |
| Echte Groovy-Variable | sh ''' ${scannerHome}/bin/sonar-scanner \ """ | ❌ Funktioniert nicht |
| Echte Groovy-Variable | sh ''' $scannerHome/bin/sonar-scanner \ """ | ❌ Funktioniert nicht |
| Echte Shell-Variable | sh ''' if [ "${TABLE_EXISTS}" = "" ]; then """ | ✅ Durch Shell interpretiert |
| Echte Shell-Variable | sh ''' if [ "$TABLE_EXISTS" = "" ]; then """ | ✅ Durch Shell interpretiert |