Chandan Naik
Chandan Naik

Reputation: 73

How do I reassign parameters in a Jenkins pipeline script?

I'm new to Jenkins and groovy scripting. I'm trying to reassign the parameters in the Jenkins script.

I tried the following

def reasignParams() {
    if(params.B == '') {
       params.B = params.A
    }
}

pipeline{
    parameters {
         string(name: 'A', defaultValue: '1.1', description: "Master Value")
         string(name: 'B', defaultValue: '', description: "Slave value")
    }
}

After running the above Jenkins pipeline script (groovy), I ran into the following error

java.lang.UnsupportedOperationException

The alternative that I thought to this is as below

def reasignParams() {
        if(params.B == '') {
           def temp = params.A
           # use temp variable instead of params.B; But this is inconvenient
        }
    }

I would like to learn if there is a way to reassign parameters in the Jenkins pipeline script? Any help would be greatly appreciated, Thanks in advance!

Upvotes: 1

Views: 1573

Answers (1)

Matthew Schuchard
Matthew Schuchard

Reputation: 28884

The params object in Jenkins Pipeline does not support write operations on its member variables. You can only initially assign them in the parameters directive (think of it like a constructor in that sense). If you want to reassign parameter values, then you do indeed need to make a deep copy like the following:

newParams = [:]
newParams.A = params.A

Upvotes: 1

Related Questions