我在Jenkins的构建中使用了动态参数,我有几个动态参数,除了一个参数外,其他参数都很好用,我把它归结为下面的例子。
properties([parameters([
choice(name: 'VERSION',
choices: 'current\nprevious',
description: "============ Select current or previous build ============"),
[$class : "DynamicReferenceParameter",
choiceType : "ET_FORMATTED_HTML",
name : "PREVIOUS_VERSION",
referencedParameters: "VERSION",
script : [$class: "GroovyScript", script: [sandbox: true, script: '''
if ( VERSION.equals("previous") ) {
return "<input name='nexus_version_number' value='' class='setting-input' type='text'>"
} else {
return "not applicable"
}
''']]]
])])
pipeline {
environment {
// Variables in the properties section above are not visible in the stages section below.
// This environment section bridges those scopes to make the values visible.
VERSION_INPUT = "${params.VERSION}"
PREVIOUS_VERSION_INPUT = "${params.PREVIOUS_VERSION}"
}
stages {
stage('Initialize') {
steps {
echo "######## Initialize ########"
script {
println ENV_INPUT
println AZ_INPUT
println VERSION_INPUT
println PREVIOUS_VERSION_INPUT
}
}
}
}
}
字符串
因此,当“版本”下拉菜单设置为“当前”时,文本字段(通过HTML)实际上是一个标签。但当它设置为“先前”时,文本字段看起来很好。
我的经验(或信念,无论对错)是,“properties”块中的变量不在“stages”的作用域中。但我可以使用“environment”块来弥补这一差距,并复制这些值。(也许这是一种浪费,也许不是。)
但是无论如何,对于“初始化”阶段的4个println,我只得到了前3行的输出。第4行(对于PREVIOUS_VERSION_INPUT)根本就没有显示出来。
我已经在其他UI控件、层叠和引用等方面采用了这种方法,没有任何问题,除了“文本字段”。
那么文本字段的名称(PREVIOUS_VERSION与“nexus_version_number”)是什么呢?我做错了吗?我没有得到任何错误。我只是没有得到填充到字段“PREVIOUS_VERSION_INPUT”中的值。
谢谢你,
Dave.
我试过使用不同的控件(而不是“single_select”),比如单选按钮和复选框,但没有任何明显的区别。我似乎无法获取该字段的值。
1条答案
按热度按时间93ze6v8z1#
您只需要将输入标记的name属性更改为
value
。正确的输入标记应该是:
字符串
另外,如果你也想捕获
Not Applicable
,那么你需要将其定义为禁用的输入字段:型
请注意,脚本中接收的值将有一个尾随的
,
,您需要在脚本中修剪它。