Configuring Build Number using source code

Is there a way to have team city set the build number format using information from source code?
I would like to set my major / minor versions with the source code instead of constants in the build configuration.

Build Format:  %env.MajorVersion%.%env.MinorVersion%.%build.vcs.number%.%build.counter%.

The VCS number and build counter work as expected.  I want to however read in the major and minor version from the checked in code.  I was able to create a build step that uses powershell to read in the major and minor version and I believe I am using the teamcity set parameter command correctly as I can confirm that the information changes in the parameters of the build.  The problem is that the build number has already been set in team city and then I am modifying the variables afterwords.

Example of the powershell
[xml]$xmlData = Get-Content -Path Example_Build
$MajorV = $xmlData.Project.PropertyGroup.MajorVer
$MinorV = $xmlData.Project.PropertyGroup.MinorVer
$BuildV = "%build.counter%"
$RepositoryV = "%build.vcs.number%"
Write-Host "##teamcity[message text='Version = $MajorV.$MinorV.$RepositoryV.$BuildV']"
Write-Host "##teamcity[setParameter name='env.MajorVersion' value='$MajorV']"
Write-Host "##teamcity[setParameter name='env.MinorVersion' value='$MinorV']"
Write-Host "##teamcity[setParameter Name='build.number' value='$MajorV.$MinorV.$RepositoryV.$BuildV']"

1 comment
Comment actions Permalink

Hello!

Please consider using this service message instead:

##teamcity[buildNumber '<new build number>']
setParameter message will indeed update the build parameter that holds the build number, but parameter just holds a copy of the actual build number, hence its updates do not change the number you see in the UI. 

Please let me know if this helps.
0

Please sign in to leave a comment.