代码之家  ›  专栏  ›  技术社区  ›  Munchkin

从外部加载参数定义

  •  0
  • Munchkin  · 技术社区  · 7 年前

    我的Jenkinsfile中有一些参数如下:

    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'
                ]
        ])]
    )
    

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

    我知道如何创建JSON对象(使用 shared libraries 要加载json文件和groovy脚本以将内容解析为json对象),我可以执行以下操作:

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

    我想这样做:

    properties(
        [parameters([
            myParams
        ])]
    )
    

    许多不同的尝试都失败了。实际上,我不知道我的params的语法是怎样的。json必须看起来像——或者如果这真的有效的话。

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

    1 回复  |  直到 7 年前
        1
  •  0
  •   Munchkin    7 年前

    我是这样做的:

    我没有创建json文件,而是在5月份创建了一个共享库 vars 文件夹,包含内容:

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

    还有我的Jenkinsfile:

    properties([parameters(myParamsLib)])