Следует помнить одну вещь: Скриптлеры не защищены, их не следует использовать: https://wiki.jenkins.io/display/JENKINS/Scriptler+Plugin! .
При этом, если вы все еще хотите пойти и использовать плагин Scriptler и CascadeChoiceParameter , код может выглядеть следующим образом:
properties([
parameters([
[
$class: 'ChoiceParameter',
choiceType: 'PT_SINGLE_SELECT',
name: 'DataCenter',
randomName: 'datacenter-choice-parameter-102102304304506506',
script: [
$class: 'ScriptlerScript',
scriptlerScriptId:'getdatacenters.groovy',
fallbackScript: [ classpath: [], script: 'return ["N/A"]']
]
],
[
$class: 'CascadeChoiceParameter',
choiceType: 'PT_SINGLE_SELECT',
name: 'EnvironmentType',
randomName: 'envtype-choice-parameter-101012020230303404',
referencedParameters: 'DataCenter',
script: [
$class: 'ScriptlerScript',
scriptlerScriptId:'getenvtypesbydatacenter.groovy',
fallbackScript: [ classpath: [], script: 'return ["N/A"]'],
]
]
])
])
Groovy-код для getdatacenters.groovy для демонстрационных целей (но может быть получен из БД в качестве альтернативы):
return["Dev","Prod"]
Groovy-код для getenvtypesbydatacenter.groovy может выглядеть следующим образом:
import groovy.sql.Sql
import jenkins.model.*
nodes = Jenkins.instance.globalNodeProperties
nodes.getAll(hudson.slaves.EnvironmentVariablesNodeProperty.class)
sql = Sql.newInstance("jdbc:sqlserver://SQLServerHere;connectionDataHere", "com.microsoft.sqlserver.jdbc.SQLServerDriver")
envTypes = sql.rows("exec [DbHere].[schema].[GetEnvTypes] @DataCenter = $DataCenter").collect({ query -> query.EnvTypeName})
envTypes.add(0,'')
return envTypes
Здесь важно отметить, что referencedParameters: 'DataCenter' находился не внутри блока скрипта, а на «корневом» уровне. Если вам нужно больше параметров, вы можете разделить их запятой.
Поскольку DataCenter является ссылочным параметром и автоматически передается в скриптлер, переменная $ DataCenter изнутри SQL-запроса будет сопоставлена с его значением. Как примечание, DataCenter должен быть добавлен как параметр сценария в разделе UI Parameters .
Кредиты за решение отправляются в CloudBees.