Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I label my build with revision number and not the GUID (in TeamCity)?

I am trying to do "continuous integration" with TeamCity. I would like to label my builds in a incremental way and the GUID provided by the VCS is not as usefull as a simple increasing number. I would like the number to actually match the revision in number in Mercurial.

My state of affairs:

alt text

Mercurial info:

alt text

I would like the build to be labeled 0.0.12 rather than the GUID.

Would someone be so kind and save me hours of trying to figure this out ?

like image 333
Tomas Pajonk Avatar asked Dec 06 '10 05:12

Tomas Pajonk


People also ask

What is build ID in TeamCity?

The internal unique ID used by TeamCity to reference builds. teamcity.auth.userId. none. A generated username that can be used to download artifacts of other build configurations.


2 Answers

As Lasse V. Karlsen mentioned those numerical revision numbers are local-clone specific and can be different for each clone. They're really not suitable for versioning -- you could reclone the same repo and get different revision numbers.

At the very least include the node id also creating something like 0.0.12-6ec760554f2b then you still get sortable release artifacts but are still firmly identifying your release.

If you're using numeric tags to tag releases there's a particularly nice option:

% hg log -r tip --template '{latesttag}.{latesttagdistance}' 

which, if the most recent tag on that clone was called 1.0.1 and was 84 commits ago gives a value like:

1.0.1.84 

Since you can have different heads that are 84 commits away from a tag in different repos you should still probably include the node id like:

% hg log -r tip --template '{latesttag}.{latesttagdistance}-{node|short}' 

giving:

1.0.1.84-ec760554f2b 

which makes a great version string.

like image 69
Ry4an Brase Avatar answered Sep 22 '22 03:09

Ry4an Brase


The best and easiest way to see rev. number in TeamCity build number is to use Build Script Interaction with TeamCity. Namely, it has a possibility to set Build Number.

So, add to your project a new very first build step Command Line with following Command Executable

for /f %%i in ('c:\tortoisehg\hg id -n') do echo ##teamcity[buildNumber '%%i'] 

And you will get the Mercurial revision number as a label for your every build.

Of course you can change the command in quotes to anything you wish.

I believe my answer is way more correct than the accepted one.

EDIT:

Also you can do the same via MSBuild task rather than Command Executable. Have a MSBuild project file with following code, setup TeamCity to run it as first step, and it will alter its global variable buildNumber:

<Message Text="##teamcity[buildNumber '$(CurrentVersion)']" Importance="High" /> 

Where CurrentVersion is a string containing full version (for example "1.0.56.20931").

like image 23
Vasyl Boroviak Avatar answered Sep 22 '22 03:09

Vasyl Boroviak