Reputation: 700
In my azure release pipeline I have 2 agent jobs, one is for sql deployment using power-shell and other is for kubernetes using power-shell. How to set an output variable in 1st agent job and use that in second agent job using power-shell.
Upvotes: 9
Views: 28682
Reputation: 115017
Use
Write-Output "##vso[task.setvariable variable=testvar;isOutput=true;]testvalue"
Then reference the output variable as if it exists from a future task.
$(taskreference.testvariable)
The task reference name can be set on the output section of the powershell script task:
But it looks like cross-job references aren't available yet, when I read the docs:
TODO
I am not sure how are we going to generate Job ref name, since we don’t have job chaining at this point.
It should be something like:
{DefinitionName}_{JobName}
So for now the variable will only work within the same Job.
It does look like YAML build do already support cross-phase output variable references.
jobs:
# Set an output variable from job A
- job: A
pool:
vmImage: 'vs2017-win2016'
steps:
- powershell: echo "##vso[task.setvariable variable=myOutputVar;isOutput=true;]this is the value"
name: setvarStep
- script: echo $(setvarStep.myOutputVar)
name: echovar
# Map the variable into job B
- job: B
dependsOn: A
pool:
vmImage: 'ubuntu-16.04'
variables:
myVarFromJobA: $[ dependencies.A.outputs['setvarStep.myOutputVar'] ] # map in the variable
# remember, expressions require single quotes
steps:
- script: echo $(myVarFromJobA)
name: echovar
Upvotes: 13
Reputation: 76928
How to use output variables across agent jobs in azure release pipeline
I am afraid there is no way to use output variables across agent jobs directly for now.
There is a related issue Variables set via logging commands are not persistent between agents, you can follow up.
To resolve this problem, you can try following workaround:
The details info about using REST API to update the value of the release definition variable, you can follow the below ticket:
How to modify Azure DevOps release definition variable from a release task?
Hope this helps.
Upvotes: 4