Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Build.SourceVersion is blank in VSO vNext Build

I am using the new scriptable build features in Visual Studio Online (not the XAML build definitions), and I am trying to have the build version number include the latest Git Commit ID of the target repository using the Build Number Format.

I am using the following build number format:

$(MajorVersion).$(MinorVersion).$(BuildId).$(SourceVersion)

Which results in a generated version number of 1.0.1234. - i.e. the SourceVersion value is blank, which causes an error in VSO when queueing a build. I have also tried qualifying the variable by prefixing it with Build. with the same result. To test, I have changed the build number to the following format:

$(MajorVersion).$(MinorVersion).$(BuildId).$(SourceBranch)

This correctly results in a value of 1.0.1234.refs_heads_master

I have been using the Predefined Variables reference and Build.SourceVersion is listed as a Global Variable.

Am I doing something wrong, have I encountered a bug or is this by design and not available at the time the build is queued? If this is by design, is there any way to automatically include the short Git Commit ID in the Build Number Format?

This is where I set the build number format in VSO: This is where I set the build number format in VSO

This is the error I see when I don't explicitly specify a Git CommitId:

400: The build number format string $(MajorVersion).$(MinorVersion).$(BuildId).$(SourceVersion) generated a build number 0.1.1. which contains invalid character(s), is too long, or ends with '.'. The maximum length of a build number is 255 characters. Characters which are not allowed include '"', '/', ':', '<', '>', '\', '|', '?', '@', and '*'.

like image 488
GaryJL Avatar asked Sep 16 '15 08:09

GaryJL


2 Answers

I was able to use $(Build.SourceVersion), but only when builds were triggered automatically on commit (on Continuous integration). It turns out to be empty only if I queue it manually:

Build queue screenshot

I'm using the following Build number format:

$(BuildDefinitionName)_$(date:yyyyMMdd)_$(Build.BuildId).$(Build.SourceVersion)$(rev:.r)
like image 93
neogarrigus Avatar answered Oct 04 '22 18:10

neogarrigus


NeoGarRiGus - it turns out empty because when you run a manual build you have to enter the Source Version field in order for it to populate. The CI inputs that value automatically when a Dev check's in but when you queue a build manually there is a blank field in the pop-up that allows you to enter the Source Version:

Source Version Field in VSTS

like image 41
Will Avatar answered Oct 04 '22 18:10

Will