Skip to content
This repository was archived by the owner on Jun 30, 2023. It is now read-only.

Commit b7fd646

Browse files
committed
Improve versioning for releasing nugets
1 parent ad3a42b commit b7fd646

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

src/build/Version.targets

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<Target Name="Version" DependsOnTargets="SetVersions">
1414
<Message Importance="high" Text="PackageVersion=$(PackageVersion)
1515
AssemblyVersion=$(AssemblyVersion)" />
16-
<Message Condition="$(CI)" Importance="high" Text="##vso[build.updatebuildnumber]$(Version)"/>
16+
<Message Condition="$(CI)" Importance="high" Text="##vso[build.updatebuildnumber]$(BuildVersion)"/>
1717
</Target>
1818

1919
<Target Name="SetVersions"
@@ -25,23 +25,36 @@ AssemblyVersion=$(AssemblyVersion)" />
2525
<PropertyGroup>
2626
<GitBranch Condition="'$(SYSTEM_PULLREQUEST_TARGETBRANCH)' != ''">$(SYSTEM_PULLREQUEST_TARGETBRANCH)</GitBranch>
2727
<GitBranch Condition="'$(SYSTEM_PULLREQUEST_TARGETBRANCH)' == '' and '$(BUILD_SOURCEBRANCHNAME)' != ''">$(BUILD_SOURCEBRANCHNAME)</GitBranch>
28+
29+
<!-- We don't build stable versions from non-master branches. When the version came from the branch, we leave it as-is. -->
30+
<GitSemVerDashLabel Condition="'$(GitBranch)' != 'master' and '$(GitSemVerDashLabel)' == '' and '$(GitSemVerSource)' != 'Branch'">-$(GitBranch)</GitSemVerDashLabel>
2831
</PropertyGroup>
2932

3033
<ItemGroup>
31-
<VersionMetadata Include="$(GitCommits)"/>
32-
<VersionMetadata Include="$(GitBranch)" Condition="'$(GitBranch)' != 'master'" />
34+
<VersionMetadata Include="$(GitCommits)" Condition="'$(GitSemVerDashLabel)' == ''"/>
35+
36+
<!-- Branch metadata always present for non-master branches, unless the existing label matches the branch.
37+
For a versioned branch, it doesn't make sense either. -->
38+
<VersionMetadata Include="$(GitBranch)" Condition="'$(GitBranch)' != 'master' and '$(GitSemVerSource)' != 'Branch' and '$(GitSemVerDashLabel)' != '-$(GitBranch)'" />
39+
3340
<VersionMetadata Condition="$(CI) and '$(BUILD_REASON)' == 'PullRequest'"
3441
Include="pr.$(SYSTEM_PULLREQUEST_PULLREQUESTNUMBER)"/>
3542
<VersionMetadata Include="sha.$(GitCommit)"/>
3643
<VersionMetadata Condition="$(CI)"
37-
Include="vsts.$(BUILD_BUILDID)"/>
44+
Include="build.$(BUILD_BUILDID)"/>
3845
</ItemGroup>
3946

4047
<PropertyGroup>
4148
<VersionMetadataLabel>@(VersionMetadata -> '%(Identity)', '-')</VersionMetadataLabel>
4249
<VersionMetadataPlusLabel Condition="'$(VersionMetadataLabel)' != ''">+$(VersionMetadataLabel)</VersionMetadataPlusLabel>
43-
<PackageVersion>$(GitBaseVersionMajor).$(GitBaseVersionMinor).$(GitBaseVersionPatch)$(GitSemVerDashLabel)$(VersionMetadataPlusLabel)</PackageVersion>
44-
<Version>$(PackageVersion)</Version>
50+
<GitSemVerDashLabel Condition="'$(GitSemVerDashLabel)' != ''">$(GitSemVerDashLabel).$(GitCommits)</GitSemVerDashLabel>
51+
52+
<BuildVersion>$(GitBaseVersionMajor).$(GitBaseVersionMinor).$(GitBaseVersionPatch)$(GitSemVerDashLabel)$(VersionMetadataPlusLabel)</BuildVersion>
53+
54+
<!-- Stable versions should have clean version numbers with no metadata -->
55+
<PackageVersion Condition="'$(GitSemVerDashLabel)' == ''">$(GitBaseVersionMajor).$(GitBaseVersionMinor).$(GitBaseVersionPatch)</PackageVersion>
56+
<PackageVersion Condition="'$(GitSemVerDashLabel)' != ''">$(GitBaseVersionMajor).$(GitBaseVersionMinor).$(GitBaseVersionPatch)$(GitSemVerDashLabel)$(VersionMetadataPlusLabel)</PackageVersion>
57+
<Version>$(BuildVersion)</Version>
4558
</PropertyGroup>
4659

4760
<ItemGroup>

0 commit comments

Comments
 (0)