jenkins扩展参数插件groovy脚本

该插件的网站说,您可以创建一个常规脚本来运行以确定参数列表。

怎么解决呢?指示什么也没说。

  1. 该脚本在什么情况下运行?
  2. 我应该从脚本中返回什么?
  3. 脚本的cwd是哪个目录?是环境变量WORKSPACE吗?
  4. 还有一个名为的额外字段variable bindings。如何使用?

回答:

我必须深入研究源代码才能找到这些问题的答案,所以我希望这对其他人有帮助。

该脚本在groovy.lang.GroovyShell中运行。该类当前来自Groovy 1.8.5库。以下是代码摘录:

// line 419 - 443 of the ExtendedChoiceParamaterDefinition

else if(!StringUtils.isBlank(groovyScript)) {

try {

GroovyShell groovyShell = new GroovyShell();

setBindings(groovyShell, bindings);

Object groovyValue = groovyShell.evaluate(groovyScript);

String processedGroovyValue = processGroovyValue(isDefault, groovyValue);

return processedGroovyValue;

}

catch(Exception e) {

}

}

else if(!StringUtils.isBlank(groovyScriptFile)) {

try {

GroovyShell groovyShell = new GroovyShell();

setBindings(groovyShell, bindings);

groovyScript = Util.loadFile(new File(groovyScriptFile));

Object groovyValue = groovyShell.evaluate(groovyScript);

String processedGroovyValue = processGroovyValue(isDefault, groovyValue);

return processedGroovyValue;

}

catch(Exception e) {

}

}

如上面的代码所示,脚本应返回一个字符串,该字符串带有您在参数或String []数组中指定的任何定界符。这是处理脚本返回的值的函数的片段:

// line 450 - 465 of ExtendedChoiceParameterDefinition

private String processGroovyValue(boolean isDefault, Object groovyValue) {

String value = null;

if(groovyValue instanceof String[]) {

String[] groovyValues = (String[])groovyValue;

if(!isDefault) {

value = StringUtils.join((String[])groovyValue, multiSelectDelimiter);

}

else if(groovyValues.length > 0) {

value = groovyValues[0];

}

}

else if(groovyValue instanceof String) {

value = (String)groovyValue;

}

return value;

}

有关系吗?您可以使用以下命令从脚本内访问环境变量WORKSPACE。

Map<String, String> props = System.getenv();

def currentDir = props.get('WORKSPACE');

这是属性文件格式的键=值文件。这些名称然后可以在groovy脚本中解析。

    e.g.

key1=foo

prop2=bar

以上是 jenkins扩展参数插件groovy脚本 的全部内容, 来源链接: utcz.com/qa/401358.html

回到顶部