Skip to content

Commit 19aeed3

Browse files
authored
refactor: support pre-release versions (#1224)
Support creating pre-release nuget packages.
1 parent fdc757e commit 19aeed3

File tree

2 files changed

+37
-9
lines changed

2 files changed

+37
-9
lines changed

Pipeline/Build.Compile.cs

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using Nuke.Common;
44
using Nuke.Common.IO;
55
using Nuke.Common.Tools.DotNet;
6+
using Nuke.Common.Tools.GitVersion;
67
using Nuke.Common.Utilities;
78
using Nuke.Common.Utilities.Collections;
89
using Serilog;
@@ -16,13 +17,26 @@ partial class Build
1617
{
1718
string BranchName;
1819
string SemVer;
20+
AssemblyVersion MainVersion;
1921

2022
Target CalculateNugetVersion => _ => _
2123
.Unlisted()
2224
.Executes(() =>
2325
{
26+
string preRelease = "-CI";
27+
if (GitHubActions == null)
28+
{
29+
preRelease = "-DEV";
30+
}
31+
else if (GitHubActions.Ref.StartsWith("refs/tags/", StringComparison.OrdinalIgnoreCase))
32+
{
33+
int preReleaseIndex = GitHubActions.Ref.IndexOf('-');
34+
preRelease = preReleaseIndex > 0 ? GitHubActions.Ref[preReleaseIndex..] : "";
35+
}
36+
2437
SemVer = GitVersion.SemVer;
2538
BranchName = GitVersion.BranchName;
39+
MainVersion = AssemblyVersion.FromGitVersion(GitVersion, preRelease);
2640

2741
if (GitHubActions?.IsPullRequest == true)
2842
{
@@ -77,16 +91,29 @@ partial class Build
7791

7892
ReportSummary(s => s
7993
.WhenNotNull(SemVer, (summary, semVer) => summary
80-
.AddPair("Version", semVer + preRelease)));
94+
.AddPair("Version", MainVersion.FileVersion + MainVersion.PreRelease)));
8195

8296
DotNetBuild(s => s
8397
.SetProjectFile(Solution)
8498
.SetConfiguration(Configuration)
8599
.EnableNoLogo()
86100
.EnableNoRestore()
87-
.SetVersion(SemVer + preRelease)
88-
.SetAssemblyVersion(GitVersion.AssemblySemVer)
89-
.SetFileVersion(GitVersion.AssemblySemFileVer)
90-
.SetInformationalVersion(GitVersion.InformationalVersion));
101+
.SetVersion(MainVersion.FileVersion + MainVersion.PreRelease)
102+
.SetAssemblyVersion(MainVersion.FileVersion)
103+
.SetFileVersion(MainVersion.FileVersion)
104+
.SetInformationalVersion(MainVersion.InformationalVersion));
91105
});
106+
107+
public record AssemblyVersion(string FileVersion, string InformationalVersion, string PreRelease)
108+
{
109+
public static AssemblyVersion FromGitVersion(GitVersion gitVersion, string preRelease)
110+
{
111+
if (gitVersion is null)
112+
{
113+
return null;
114+
}
115+
116+
return new AssemblyVersion(gitVersion.AssemblySemVer, gitVersion.InformationalVersion, preRelease);
117+
}
118+
}
92119
}

Pipeline/Build.Pack.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.Collections.Generic;
12
using System.IO;
23
using System.Linq;
34
using System.Text;
@@ -64,13 +65,10 @@ partial class Build
6465
.DependsOn(Compile)
6566
.Executes(() =>
6667
{
67-
ReportSummary(s => s
68-
.WhenNotNull(SemVer, (c, semVer) => c
69-
.AddPair("Packed version", semVer)));
70-
7168
AbsolutePath packagesDirectory = ArtifactsDirectory / "Packages";
7269
packagesDirectory.CreateOrCleanDirectory();
7370

71+
List<string> packages = new();
7472
foreach (Project project in new[]
7573
{
7674
Solution.TestableIO_System_IO_Abstractions_Wrappers,
@@ -85,6 +83,7 @@ partial class Build
8583
{
8684
File.Move(package, packagesDirectory / Path.GetFileName(package));
8785
Debug("Found nuget package: {PackagePath}", package);
86+
packages.Add(Path.GetFileName(package));
8887
}
8988

9089
foreach (string symbolPackage in
@@ -94,5 +93,7 @@ partial class Build
9493
Debug("Found symbol package: {PackagePath}", symbolPackage);
9594
}
9695
}
96+
ReportSummary(s => s
97+
.AddPair("Packages", string.Join(", ", packages)));
9798
});
9899
}

0 commit comments

Comments
 (0)