Update Variable in TeamCity powershell script

Jake Rote picture Jake Rote · Jun 11, 2014 · Viewed 12.3k times · Source

I am trying to update an enviroment variable in TeamCity using Powershell script. However, it does not update the value of the variable. How can I do this?

Below is my current code which gets the currentBuildNumber fine:

$currentBuildNumber = "%env.currentBuildNumber%"
$newBuildNumber = ""
Write-Output $currentBuildNumber
If ($currentBuildNumber.StartsWith("%MajorVersion%") -eq "True")
{
 $parts = $currentBuildNumber.Split(".")
 $parts[2] = ([int]::Parse($parts[2]) + 1) + ""
 $newBuildNumber = $parts -join "."
}
Else
{
 $newBuildNumber = '%MajorVersion%.1'
}

//What I have tried
$env:currentBuildNumber = $newBuildNumber
Write-Host "##teamcity[env.currentBuildNumber '$newBuildNumber']"
Write-Host "##teamcity[setParameter name='currentBuildNumber' value='$newBuildNumber']"

Answer

SteveChapman picture SteveChapman · Jun 11, 2014

Try

"##teamcity[setParameter name='env.currentBuildNumber' value='$newBuildNumber']"

(note the env. prefix in the name)

Also, you can try to increase the PowerShell std out column default (80 using TeamCity's command runner). If your service message is longer than that, then TeamCity will fail to parse it.

if ($env:TEAMCITY_VERSION) {
    $host.UI.RawUI.BufferSize = New-Object System.Management.Automation.Host.Size(8192,50)
}