Passing release variables between two agent phases

There is no way to persist variables (no matter powershell variables or VSTS user defined variables) between two agent phases (and environments) for now.

And there is a related issue Variables set via logging commands are not persistent between agents, you can follow up.

The work around for now is define the variable again in next agent phase.


You can share a variable between the agent phases by using the TFS Rest API and creating a new variable in the release.

You can create a helper module to facilitate this task.

  1. Get the release by using the environment variable $Env:Release_ReleaseId.
  2. Add a NoteProperty, using Add-Member, to the variables hashtable of the release returned in step 1, where the name is your desired variable name and the value is a ConfigurationVariableValue.
  3. Save the release with the added variable.

In order to use this approach, you would set the variable in your first agent. Then, in the second agent, you can simply read the TFS variable using the $(VariableName) semantic.