Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Teamcity custom build number generator

Our Teamcity build currently generates build numbers in the format 1.0.0.[SVN REVISION] which it passes through to MSBUILD.

I need to change this to the format 1.0.[DLL VERSION].[SVN REVISION] where we insert a de-dotted version of a dependant dll in. For example if our dependant dll is version 1.2.3.4 the generated build number would be 1.0.1234.[SVN REVSION].

The dependant dll is part of the build source so I had hoped I could do something with build parameters and a little exe that interegates it for the version info but cannot see any way to incorporate this through the UI.

Any ideas if this is possible?

like image 828
Matt Avatar asked Dec 28 '22 11:12

Matt


1 Answers

You can output the build number during the execution of the build script, and teamcity will use that output to label the build. For example, I label my build with the same version that I put into AssemblyInfo.cs. Part of that version (Major, Minor) is actually in the file already, the other part (Build, Revision) gets added during the build.

From my msbuild script:

<Target Name="Setup">
    <!-- Version.txt contains the major and minor version numbers, 
         The build number and revision come from environment variables
         in the next step -->
    <Version VersionFile="Version.txt" BuildType="None" RevisionType="None">
        <Output TaskParameter="Major" PropertyName="Major" />
        <Output TaskParameter="Minor" PropertyName="Minor" />
    </Version>

    <!-- If you want to build a release without going through the build
         server, you should define the following 2 environment variables
         when running this build script -->

    <!-- BUILD_NUMBER environment variable supplied by the build server -->
    <CreateProperty
        Value="$(BUILD_NUMBER)">
        <Output
            TaskParameter="Value"
            PropertyName="Build" />
    </CreateProperty>

    <!-- BUILD_VCS_NUMBER environment variable supplied by the build server -->
    <CreateProperty
        Value="$(BUILD_VCS_NUMBER)">
        <Output
            TaskParameter="Value"
            PropertyName="Revision" />
    </CreateProperty>       

    <AssemblyInfo CodeLanguage="CS"  
        OutputFile="Properties\VersionInfo.cs" 
        AssemblyVersion="$(Major).$(Minor).$(Build).$(Revision)" 
        AssemblyFileVersion="$(Major).$(Minor).$(Build).$(Revision)" />

    <!-- Tell the build server what our actual build number is -->
    <Message Text="##teamcity[buildNumber '$(Major).$(Minor).$(Build).$(Revision)']" />
</Target>

you just output the version during the build the format is ##teamcity[buildNumber '<buildnum>']

like image 191
sylvanaar Avatar answered Dec 31 '22 14:12

sylvanaar