I'm trying to set the build number format in Teamcity using Powershell (kinda like in this Octopus Deploy blog post).
However, I don't know if the way Teamcity handles the service messages has changed since then or if I'm doing this wrong because it's not working.
I have the following Powershell script as the first step in my build config:
$buildCounter = "%build.counter%"
$buildConfig = "%system.buildconfig%"
$version = "%system.majorMinorVersion%"
$branch = "%vcsroot.branch%"
if ($branch.Contains("/"))
{
$branch = $branch.substring($branch.lastIndexOf("/")).trim("/")
}
$buildNumber = "${version}.${buildCounter}-${branch}"
Write-Host "##teamcity[buildNumber '$buildNumber']"
(I've also tried $branch = "%teamcity.build.branch%"
on line 5)
So when I try this, the if statement doesn't run because although it seems like in the example given by Octopus Deploy that $branch is set to the actual value of %vcsroot.branch%
it's not and the result that it writes out to Teamcity is literally ##teamcity[buildNumber '$buildNumber']
. However, this does seem to work but the build number can't have /
in it so my build fails because the branch is set to refs/head/master
rather than just master
.
Where am I going wrong?