Chethan Swaroop
Chethan Swaroop

Reputation: 192

Active Choices Reactive Parameter does not gets selected when the Reference parameter is set from a parent job

I have 2 Jenkins Job, say ParentJob and ChildJob.

The ParentJob has a Active Choice Parameter, say ENV, with the below groovy script:

return[
'A','B','C',
]

The ChildJob also has a similar Active Choice Parameter, say ENV, with the same groovy script. Additionally, there is also an Active Choices Reactive Parameter, say ENV_URL with ENV as the Reference Parameter and with following groovy script:

if(ENV.equals("A")){
 return ["https://a.com"]
}else if(ENV.equals("B")){
 return ["https://b.com"]
} else {
 return ["https://c.com"]

Now, I'm calling ChildJob from my ParentJob using a pipeline script. When I set ENV as "A" in my ParentJob, which internally calls ChildJob,

ParentJob pipeline code:

pipeline {
  agent {
     node {
     }
  }

  stages {
     stage('ChildJob') {
       steps {
           script {
               JOB_NAME="ChildJob"
               def myJob=build job: "${JOB_NAME}", parameters: [
                                  string(name: 'ENV', value:"${ENV}")
                             ]
}
  1. The Active Choices Parameter for ENV in the ChildJob is set to A
  2. However, the Active Choice Reactive Parameter ENV_URL is empty and IS NOT SET with the value "http://a.com"

Basically, would want the Active Choices Reactive Parameter to set a value based on the Reference Parameter which is set from a Parent job.

Any suggestions on how this can be achieved?

Upvotes: 1

Views: 1442

Answers (1)

ycr
ycr

Reputation: 14574

I don't think this is possible. The best option for you is to Pass the parameter from the parent Job.

JOB_NAME="ChildJob"
URL = getURLByEnv("$ENV") // Retrive the URL based on the Same logic in your child job. 
build job: '$JOB_NAME', parameters:[
  string(name: 'ENV', value: "$ENV"),
  string(name: 'url', value: "$URL")
]

Upvotes: 1

Related Questions