2016-08-10 5 views
4

Ich möchte Switch-Anweisung in Jenkins Pipeline-Job verwenden.Groovy Switch-Anweisung mit einer Liste von Werten

def version = "1.2" 
switch(GIT_BRANCH) { 
    case "develop": 
    result = "dev" 
    break 
    case ["master", "support/${version}"]: 
    result = "list" 
    break 
    case "support/${version}": 
    result = "sup" 
    break 
    default: 
    result = "def" 
    break 
} 
echo "${result}" 

Wenn GIT_BRANCH ist gleich:

  • develop - zurückgegebene Wert ist dev - OK
  • master - zurückgegebene Wert list ist - OK
  • support/1.2 - zurückgegebene Wert sup ist - warum nicht list?
+1

Also Ihre Frage ist im Wesentlichen "Was ist das Verhalten von Groovy' Switch', wenn mehrere 'case's übereinstimmen?"? –

+0

Ich möchte diese mehrfache Groß-/Kleinschreibung mit einer Mischung aus Zeichenfolgenwerten und Variablen kombinieren. In meinem Code funktioniert die Variable nur im Einzelfall, was für mich keine gute Lösung ist. – Yama

Antwort

11

Meine Vermutung ist, dass die Art der GIT_BRANCH ist ein String während "support/${version}" ein GString ist. Wenn Sie diese zu einem String umwandeln sollte es funktionieren:

def version = "1.2" 
switch(GIT_BRANCH) { 
    case "develop": 
    result = "dev" 
    break 
    case ["master", "support/${version}".toString()]: 
    result = "list" 
    break 
    case "support/${version}": 
    result = "sup" 
    break 
    default: 
    result = "def" 
    break 
} 
echo "${result}" 

Der Unterschied zwischen den beiden String-Typen Materie nicht, wenn sie miteinander zu vergleichen, aber es kann auch für andere Arten von Vergleichs Materie, zum Beispiel In Ihrem Code vergleichen Sie implizit einen GString mit den Elementen eines List.

+0

Vielen Dank! Es funktioniert jetzt. – Yama

Verwandte Themen