Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

VSTS: Pass build/release variables into Powershell script task

Ideally, I would want to configure our Azure Web App application settings using build variables (on VSTS), for example:

VSTS Build

We perform our publish tasks using Powershell scripts. In order to set app settings, the following script could be used:

param($websiteName, $appSettings) Set-AzureWebsite -Name $websiteName -AppSettings $appSettings 

I could pass these build variables manually into a Powershell script build task, like so:

PrepareAppSettings.ps1 -websiteName "MyWebApp" -appsettings @{"MyConnectionString" = $(MyConnectionString);"MyRandomService" = $(MyRandomService);"MyRandomServiceClient"=$(MyRandomServiceClient);"MyRandomServicePassword"=$(MyRandomServicePassword)} 

Is there a way to pass all build variables into a script without having to explicitly specifying each one in a hash table?

like image 688
Dave New Avatar asked May 03 '16 06:05

Dave New


People also ask

How do you use variables in a pipeline release?

In the Pipeline Variables page, open the Scope drop-down list and select "Release". By default, when you add a variable, it is set to Release scope. Share values across all of the tasks within one specific stage by using stage variables.

How do you pass variables between tasks in Azure DevOps?

Share variables between Tasks across the Jobs (of the same Stage) We need to use the isOutput=true flag when you desire to use the variable in another Task located in another Job. Navigate to Stage1_Job1_Task1 and add isoutput = true flag to the Logging Command which let's us to access the value outside the Job.

How do you use pipeline variables in PowerShell?

Windows PowerShell has a unique pipeline variable $_ or $PSItem . Windows PowerShell's ability to pipe entire objects from one command to another is needed to represent that object traversing the pipeline. When one Windows PowerShell cmdlet pipes something to another command, that cmdlet can send an object.


1 Answers

Build Variables are automatically passed to all the PowerShell scripts as environment variables.

So if you have defined a variable myVar in the Variables section. You can access it as $env:myVar in your script. One thing to note here is that . is converted to a _. For eg. if your variable is myVar.config, you will access it in your script as $env:myVar_config.

The available variables also include variables such as branch name, build number etc. To see all the available variables, run a dummy build/release definition and add a PowerShell task with inline type and run Get-ChildItem Env:. This will show you all the available environment variables and you can see all your custom defined variables.

More details are available here

like image 157
Harshil Lodhi Avatar answered Sep 17 '22 01:09

Harshil Lodhi