遍历groovy文件内容

zqdjd7g9  于 2022-11-21  发布在  其他
关注(0)|答案(1)|浏览(144)

我有两个groovy脚本(在Jenkins管道中执行),其中一个带有变量:

// Params file
PARAM1 = "1"
PARAM2 = "2"
PARAM3 = "3"
PARAM4 = "4"

return this

第二个加载此文件并使用参数:

def load_params() {
    def parameters = load "params.groovy"
        final_parameter = ""
    
        for (parameter in parameters) {
            if(final_parameter == "") {
                final_parameter = parameter.key.toUpperCase() + "=" + parameter.value
            } else {
                final_parameter = final_parameter+ "&|&" + parameter.key.toUpperCase() + "=" + parameter.value
            }
        }
    
        return final_parameter
    }
    
    return this

问题是对参数进行迭代不起作用。类型不是Map,所以我不能访问这样的变量。
我将使用parameters.PARAM1来处理它,但是第一个脚本是动态的,名称会更改,因此需要在不硬定义名称的情况下执行此操作。

是否有任何方法可以更改/迭代参数以获取“键”和“值”?

plupiseo

plupiseo1#

这里有一些你可以做的事情。

选项01:使参数成为贴图

我想这是最好的解决办法。

// Params file
parameters = [ "PARAM1": "1", "PARAM2": "2", "PARAM3": "3", "PARAM4": "4"]

return this

选项02:将参数作为文件读取

您可以将Params作为File读取,然后逐行迭代并读取参数,而不是作为Script加载。

选项03:获取当前绑定中定义的所有变量。

这可能会返回当前绑定中的所有变量,因此您可能必须过滤掉在param文件中定义的变量。

def load_params() {
    def parameters = load "params.groovy"
        final_parameter = ""
        paramMap = [:] << parameters.getBinding().getVariables()
        for (parameter in paramMap) {
            if(final_parameter == "") {
                final_parameter = parameter.key.toUpperCase() + "=" + parameter.value
            } else {
                final_parameter = final_parameter+ "&|&" + parameter.key.toUpperCase() + "=" + parameter.value
            }
        }
    
        return final_parameter
    }
    
    return this

相关问题