2017-06-09 5 views
0

Ich habe eine deklarative Jenkinsfile mit dem environment { } Block, um einige Umgebungsvariablen festzulegen.Deklarative Jenkinsfile mehrere Umgebung vars mit dem gleichen Wert

Nehmen wir an, ich habe zwei vars FOO und BAR (in dieser Reihenfolge deklariert), dass ich aus beiden Gründen auf den Wert nurse setzen muss.

Gibt es eine Möglichkeit, die FOO var bei der Zuweisung an BAR zu referenzieren, so dass ich nur nurse an einer Stelle explizit setzen muss?

Ich versuchte BAR = env.FOO und BAR = FOO tun, die beide nicht, und die docs scheinen nicht viel Anleitung für einen solchen Anwendungsfall zur Verfügung zu stellen ...

Hier ist eine grobe Mockup von dem, was ich bin derzeit mit (glorreiche Wiederholung in Takt):

#!/usr/bin/env groovy 

pipeline { 
    agent any 

    environment { 
     FOO = 'nurse' 
     BAR = 'nurse' 
    } 
} 

Antwort

0

dies tatsächlich schaut hat, zum zweiten var können Sie groovy String Interpolation, um den Wert des ersten var zuweisen, wie BAR = "{env.FOO}" (beachten Sie, dass die doppelten Anführungszeichen sind important hier).

+0

Ich sollte beachten, dass dieser Ansatz (wirklich wirklich seltsam) scheint zu scheitern, wenn Sie mehrere Envars interpolieren - ich hatte einen Fall, wo ich einige Envar 'FOO' basierend auf einem Build-Parameter gesetzt, dann wollte das interpolieren ein envar 'BAR', das bereits den' WORKSpace' envar interpoliert hatte; nachdem ich interpoliert habe wie 'BAR =" $ {env.WORKSPACE}/xyz _ $ {env.FOO} .db "', 'BAR' war nirgendwo zu finden! –

Verwandte Themen