I am running a pipeline job and with this we need to pass a parameter to a downsteam job but its not working. We tried as follows:
Pipeline JOB:
node {
parameters {
choice(
name: 'OS',
choices:"Windows\nLinux\nMAC",
description: "Choose Environment to build!")
}
stage('Build') {
if("${params.Environment}" == 'Windows')
{
paramAValue = "${params.Environment}"
build job: 'QA-Test-Windows',parameters: [[$class: 'StringParameterValue', name: 'ParamA', value: "$paramAValue"]]
}
}
}
QA-Test-Windows is a Freestyle job and in that we tried accessing the parameter in script as follows but its not working.
Write-output "OS selected for testing is ${params.ParamA}"
Write-output "OS selected for testing is ${ParamA}"
Tried accessing variables but its not working. Can anyone please help me on this. We tried creating QA-Test-Windows freestyle job as Pipelinejob but in this freestyle there are lot of Build steps.
ON THE CALLING JOB:
ON THE SECOND JOB:
I'm not sure what exactly wrong in your code, looks like there is mistake. Maybe you need to wrap your
"$paramAValue"
into{}
too. when you tries to run downstream job?But, according to what you want, I just tested this working solution:
I have two pipeline jobs (upstream and downstream):
Downstream job has parameter with name
OS
Upstream job has choice parameter
PickAnOS
and there is working pipeline script for upstream job, which runs downstream job with the selected parameter
I hope this helps edit: Fixed a minor mistake as on Jenkins quotation marks, ie '' vs "" make a difference.