Search code examples
jenkinsjenkins-pluginsjenkins-pipelinemultibranch-pipeline

How can I delete one property from Jenkins pipeline?


In my Jenkins multibranch pipeline I want to use the following code in my Jenkinsfile:

def props = [
    parameters([
        string(
            defaultValue: "Value1",
            name: 'VALUE_NAME',
            description: 'Something'),
        string(
            defaultValue: "Value2",
            name: 'VALUE_NAME_v2',
            description: 'Something else')
])]
properties(props)

if(condition1) {
    // remove only VALUE_NAME
}

But how can I remove the property VALUE_NAME only in case where condition1 is true? I found only the sintax:

props.removeAll { it.toString().contains('VALUE_NAME')}

^^ This removes all the parameters even if my variables don't have names with common body like in this example ("VALUE_NAME").
And with this sintax, once the build has run once, I am not able to see the "Build with paramtres" button on the job UI, but "Build now".


Solution

  • My workaround:

    Script

    def params = [
        string(
            defaultValue: "Value1",
            name: 'VALUE_NAME_v1',
            description: 'Something'),
        string(
            defaultValue: "Value2",
            name: 'VALUE_NAME_v2',
            description: 'Something else')
    ]
    if(condition1) {
        // remove only VALUE_NAME_v1
        params.removeAll {it.toString().contains("VALUE_NAME_v1")}
    }
    def props = [
        parameters(params)]
    properties(props)