2017-02-28 3 views
-1

Ich habe einen booleschen Parameter namens MyTests als Teil des Build-Jobs. Der Job ruft ein Groovy-Skript auf. Ich glaube, der folgende Code verursacht ein Problem innerhalb des Skripts. Irgendeine Idee über den richtigen Weg in Groovy, um einen Boolean innerhalb einer if-Anweisung zu referenzieren.Jenkins Groovy Skript

stage("post_build") { 
    if (${params.MyTests}) { 
     my_code_block... 
     } 

java.lang.NoSuchMethodError: No such DSL method '$' found among steps

Antwort

1

die ${...} entfernen und param.MyTests direkt schreiben. Die ${...} sollte nur verwendet werden, wenn eine Variable (oder regulärer Groovy/Java-Ausdruck) innerhalb einer Zeichenfolge referenziert wird. Also:

def foo = "bar" 
echo foo 
echo "Withing a string: ${foo}" 

so in Ihnen Fall sind:

stage("post_build") { 
    if (params.MyTests) { 
     my_code_block... 
    } 
    ... 
+0

Would Einstellung bewerten die oben automatisch auf True oder muss ich = true hinzufügen .. – user2040074

+0

Nein,'params.MyTests' wird? sei ein 'boolean'-Objekt, siehe Zitat in Gerold Brosers Antwort unten, im Grunde haben Objekte in' params' ein Objekt, das dem Parametertyp entspricht. –

0

Pipeline Syntax, Flow Control Siehe:

stage('Example') { 
    if (env.BRANCH_NAME == 'master') { 
     echo 'I only execute on the master branch' 
    } 
} 

und JENKINS-27295:

I would say that it is a best practice to always use the params object if you want the ensure that the type is consistent. Referencing the parameter as either foo or env.foo returns the value as it was injected into an environment variable and will always be of type String .

properties([parameters([booleanParam(defaultValue: false, description: '', name: 'foo')])]) 

echo "foo: " + foo.getClass().toString() 
echo "env.foo: " + env.foo.getClass().toString() 
echo "params.foo: " + params.foo.getClass().toString() 

returns:

[Pipeline] echo 
foo: class java.lang.String 
[Pipeline] echo 
env.foo: class java.lang.String 
[Pipeline] echo 
params.foo: class java.lang.Boolean 
[Pipeline] 
Verwandte Themen