簡體   English   中英

jenkins擴展參數插件groovy腳本

[英]jenkins extended parameter plugin groovy script

插件網站說您可以創建一個groovy腳本來運行以確定參數列表。

這怎么解決了? 說明書沒有說什么。

  1. 在什么上下文中運行腳本?
  2. 我應該從腳本中返回什么?
  3. 什么目錄是腳本的cwd? 它是環境變量WORKSPACE嗎?
  4. 還有一個名為variable bindings的額外字段。 這是怎么用的?

我不得不深入研究源代碼以找到這些問題的答案,所以我希望這有助於其他所有人。

1.腳本在什么上下文中運行?

該腳本在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) {

    }
}

2.我應該從腳本中返回什么?

如上面的代碼所示,腳本應返回一個字符串,其中包含您在paramater或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;
}

3.腳本的cwd是什么目錄? 它是環境變量WORKSPACE嗎?

有關系嗎? 您可以使用腳本在腳本中訪問環境變量WORKSPACE

Map<String, String> props = System.getenv();
def currentDir = props.get('WORKSPACE');

4.有一個額外的字段稱為變量綁定。 這是怎么用的?

這是屬性文件格式化的key = value文件。 這些名稱然后可以在groovy腳本中解析。

    e.g.
    key1=foo
    prop2=bar

用於解析json對象(從參數)到groovy對象 - 解析和生成JSON

import groovy.json.JsonSlurper
def jsonSlurper = new JsonSlurper()
def object = jsonSlurper.parseText('{ "myList": [4, 8, 15, 16, 23, 42] }')
println(object.myList)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM