从外部加载参数定义

时间:2018-01-17 12:53:11

标签: json jenkins groovy jenkins-pipeline

我的Jenkins文件中有一些参数如下:

properties(
    [parameters([
            [$class: 'ValidatingStringParameterDefinition', 
                defaultValue: '', 
                description: 'regex param', 
                failedValidationMessage: '', 
                name: 'VSTRING', 
                regex: '.+'
            ],
            [$class: 'StringParameterDefinition', 
                defaultValue: 'some string', 
                description: 'string param',  
                name: 'STRING',
                trim: false
            ],
            [$class: 'ChoiceParameterDefinition',  
                name: 'CHOICE',
                choices: 'a\nb\nc', 
                description: 'coice param'
            ]
    ])]
)

我不想在Jenkins文件中定义那些参数,而是想从外部加载它。例如,通过解析JSON文件,我在其中定义参数。

我知道如何创建一个JSON对象(使用shared libraries加载json文件和一个groovy脚本来将内容解析为json对象),所以我可以这样做:

def jsonString = libraryResource 'params.json'
def myParams = jsonParse(jsonString)

我想做这样的事情:

properties(
    [parameters([
        myParams
    ])]
)

许多不同的尝试失败了。实际上,我不知道我的params.json的语法应该是什么样的 - 或者这是否适用。

希望您有一些想法如何从Jenkins文件外部加载我的参数定义。

1 个答案:

答案 0 :(得分:0)

我是通过以下方式做到的:

我没有创建json文件,而是在may vars文件夹中创建了一个共享库,内容为:

// vars/myParamsLib.groovy
def call(){
    def params = []
    params.add([$class: 'ValidatingStringParameterDefinition', 
                defaultValue: '', 
                description: 'regex param', 
                failedValidationMessage: '', 
                name: 'VSTRING', 
                regex: '.+'
            ])
    // params.add(...)
    return params
}

我的詹金斯文件:

properties([parameters(myParamsLib)])