使用 Active Choice Reactive Reference 参数构建项目

jb2*_*b27 5 groovy jenkins jenkins-groovy

我是 jenkins 和 groovy 的新手,我正在尝试创建自己的配置,这允许我使用各种参数构建我的项目。为了实现这一点,我使用了 Active Choices Reactive Reference 参数。作为选择类型,我设置了“格式化的 HTML”。它看起来和我想要的完全一样,但不幸的是,无论如何,我无法返回参数来构建。

这是我的常规脚本:

if(useDefaultValues.equals("YES")) {
    return "defaultName"
 } else {
    inputBox = "<input name='name' class='setting-input' type='text'>"
    return inputBox
 }
Run Code Online (Sandbox Code Playgroud)

这是我的配置的样子

使用默认参数构建

使用其他参数构建

任何人都可以帮我解决这个问题吗?

Szy*_*iak 9

将您的 Groovy 脚本更新为如下所示:

def defaultName = "default name"

if (useDefaultValues.equals("YES")) {
    return "<b>${defaultName}</b><input type=\"hidden\" name=\"value\" value=\"${defaultName}\" />"
 }

return "<input name=\"value\" class=\"setting-input\" type=\"text\">"
Run Code Online (Sandbox Code Playgroud)

重要的是您的输入字段使用名称value- 它不会更改您的参数名称,如果您命名它,name您将能够访问它$name(例如,如果您使用 Groovy)。

将默认值作为隐藏输入字段传递也很重要,否则不会设置参数值。这个隐藏的输入也必须使用 name value

然而,HTML 格式的输入参数有一个奇怪的问题——它总是添加,在参数值的末尾。因此,例如,如果我通过lorem ipsum,当我使用参数读取它时,$name我会得到lorem ipsum,. 看起来它把它当作多个参数什么的。要从参数中提取干净的值,您可以执行以下操作(Groovy 代码):

name.split(',').first()
Run Code Online (Sandbox Code Playgroud)


Sev*_*ven 5

def defaultName = "default name"
if (useDefaultValues.equals("YES")) {
    return "<input type=\"text\" name=\"value\" value=\"${defaultName}\" />"
}
return "<input name=\"value\" type=\"text\">"
Run Code Online (Sandbox Code Playgroud)

检查“省略值字段”修复逗号问题。(逗号问题