首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jenkins扩展参数插件groovy脚本

jenkins扩展参数插件groovy脚本
EN

Stack Overflow用户
提问于 2014-07-14 13:46:51
回答 2查看 35.6K关注 0票数 38

website for the plugin说您可以创建一个groovy脚本来运行以确定参数列表。

那么这个问题是如何解决的呢?说明书上什么也没说。

  1. 脚本在什么上下文中运行?
  2. 脚本应该返回什么?
  3. 脚本的cwd目录是什么?是不是环境变量WORKSPACE?
  4. there是一个叫做variable bindings的额外字段。如何使用?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-14 14:57:33

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

1.脚本在什么上下文中运行?

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

代码语言:javascript
复制
// 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) {

    }
}

2.我应该从脚本中返回什么?

如上面的代码所示,脚本应该返回一个字符串,其中包含您在参数或String[]数组中指定的任何分隔符。以下是处理从脚本返回的值的函数的一段代码:

代码语言:javascript
复制
// 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;
}

3.脚本的cwd目录是什么?是环境变量WORKSPACE吗?

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

代码语言:javascript
复制
Map<String, String> props = System.getenv();
def currentDir = props.get('WORKSPACE');

4.有一个额外的字段叫做变量绑定。它是如何使用的?

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

代码语言:javascript
复制
    e.g.
    key1=foo
    prop2=bar
票数 35
EN

Stack Overflow用户

发布于 2017-11-11 21:44:11

For将json对象(从参数)解析为groovy object - Parsing and producing JSON

代码语言:javascript
复制
import groovy.json.JsonSlurper
def jsonSlurper = new JsonSlurper()
def object = jsonSlurper.parseText('{ "myList": [4, 8, 15, 16, 23, 42] }')
println(object.myList)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24730186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档