Я пишу jenkinsfile, который позволяет динамические параметры, используя SecureGroovyScript и CascadeChoiceParameter.Вот мой код
properties([
parameters([
choice(choices: "\nDev" + "\nQA" + "\nStage" +"\nProd",description: 'Please select an environment',name: 'Env'),
[$class: 'CascadeChoiceParameter',
choiceType: 'PT_SINGLE_SELECT',
description: 'Select the Server from the Dropdown List',
filterLength: 25,
filterable: true,
name: 'Server',
referencedParameters: 'Env',
script: [
$class: 'GroovyScript',
fallbackScript: [
sandbox: false,
script:
'return[\'Could not get Environment from Env Param\']'
],
script: [
sandbox: false,
script: new SecureGroovyScript(''' if (Env.equals("Dev"))
{
return["Dev1","Dev2","Dev3","Dev4"]
}
else if(Env.equals("QA")){
return["QA1","QA2","QA3"]
}
else if(Env.equals("Stage")){
return["Stg1","Stg2","Stg3"]
}
else if(Env.equals("Prod")){
return["Prod1","Prod2"]
}''',false,[])
]
]
]
])
])
Когда я выполняю код, он продолжал показывать следующую ошибку
java.lang.ClassCastException: org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript.script expects class java.lang.String but received class org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript
at org.jenkinsci.plugins.structs.describable.DescribableModel.coerce(DescribableModel.java:421)
at org.jenkinsci.plugins.structs.describable.DescribableModel.buildArguments(DescribableModel.java:341)
at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:282)
Caused: java.lang.IllegalArgumentException: Could not instantiate {sandbox=false, script=org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript@69525ebd} for SecureGroovyScript(script: String, sandbox: boolean, classpath: ClasspathEntry(path: String)[])
at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:287)
at org.jenkinsci.plugins.structs.describable.DescribableModel.coerce(DescribableModel.java:403)
at org.jenkinsci.plugins.structs.describable.DescribableModel.buildArguments(DescribableModel.java:341)
at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:282)
Я сомневался, что проблема возникла из создания экземпляра SecureGroovyScript, который распознает входной скриптнеправильноЕсть ли способ обойти это?
--- ОБНОВЛЕНИЕ --- Спасибо, @metalisticpain за ваш совет.У меня есть еще несколько дополнительных комментариев.чего я хочу добиться - это прочитать файл с динамически выбранного пути.вот что я пытался, но все равно не получилось
script:
'''
if (!Env.isEmpty()){
GString path = "converge-cloud-params/${Env}-flavors.txt"
File file = new File(path)
result = file.readLines()
return result
}
'''