I have blogged in the past ( here , here and here) about the complexities and possible areas of confusion with different types of Azure DevOps pipeline variables.
Well here is another example of how to use variables and what can trip you up.
The key in this example is the scope of a variable, whether it is available outside a job and the syntax to access it
Variables local to the Job
So, if you create your variable as shown below
write-host "##vso\[task.setvariable variable=standardvar\]$MyPowerShellVar"
It is only available in the current job in the form $(standardvar)
Variable with a wider scope
If you want it to be available in another job, or stage you have to declare it thus, adding ;isOutput=true
write-host "##vso\[task.setvariable variable=stagevar;isOutput=true\]$MyPowerShellVar"
But there is also a change in how you access it.
- You need to give the script that declares the variable a name so it can be referenced
- You need to add dependons associations between stages/jobs
- And the syntax used to access the variable changes depending on whether you are in the same job, same stage but a different job or a completely different stage.
Below is a fully worked example