Skip to content

Commit

Permalink
refactor: support pre-release versions (#1224)
Browse files Browse the repository at this point in the history
Support creating pre-release nuget packages.
  • Loading branch information
vbreuss authored Feb 22, 2025
1 parent fdc757e commit 19aeed3
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 9 deletions.
37 changes: 32 additions & 5 deletions Pipeline/Build.Compile.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using Nuke.Common;
using Nuke.Common.IO;
using Nuke.Common.Tools.DotNet;
using Nuke.Common.Tools.GitVersion;
using Nuke.Common.Utilities;
using Nuke.Common.Utilities.Collections;
using Serilog;
Expand All @@ -16,13 +17,26 @@ partial class Build
{
string BranchName;
string SemVer;
AssemblyVersion MainVersion;

Target CalculateNugetVersion => _ => _
.Unlisted()
.Executes(() =>
{
string preRelease = "-CI";
if (GitHubActions == null)
{
preRelease = "-DEV";
}
else if (GitHubActions.Ref.StartsWith("refs/tags/", StringComparison.OrdinalIgnoreCase))
{
int preReleaseIndex = GitHubActions.Ref.IndexOf('-');
preRelease = preReleaseIndex > 0 ? GitHubActions.Ref[preReleaseIndex..] : "";
}

SemVer = GitVersion.SemVer;
BranchName = GitVersion.BranchName;
MainVersion = AssemblyVersion.FromGitVersion(GitVersion, preRelease);

if (GitHubActions?.IsPullRequest == true)
{
Expand Down Expand Up @@ -77,16 +91,29 @@ partial class Build

ReportSummary(s => s
.WhenNotNull(SemVer, (summary, semVer) => summary
.AddPair("Version", semVer + preRelease)));
.AddPair("Version", MainVersion.FileVersion + MainVersion.PreRelease)));

DotNetBuild(s => s
.SetProjectFile(Solution)
.SetConfiguration(Configuration)
.EnableNoLogo()
.EnableNoRestore()
.SetVersion(SemVer + preRelease)
.SetAssemblyVersion(GitVersion.AssemblySemVer)
.SetFileVersion(GitVersion.AssemblySemFileVer)
.SetInformationalVersion(GitVersion.InformationalVersion));
.SetVersion(MainVersion.FileVersion + MainVersion.PreRelease)
.SetAssemblyVersion(MainVersion.FileVersion)
.SetFileVersion(MainVersion.FileVersion)
.SetInformationalVersion(MainVersion.InformationalVersion));
});

public record AssemblyVersion(string FileVersion, string InformationalVersion, string PreRelease)
{
public static AssemblyVersion FromGitVersion(GitVersion gitVersion, string preRelease)
{
if (gitVersion is null)
{
return null;
}

return new AssemblyVersion(gitVersion.AssemblySemVer, gitVersion.InformationalVersion, preRelease);
}
}
}
9 changes: 5 additions & 4 deletions Pipeline/Build.Pack.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
Expand Down Expand Up @@ -64,13 +65,10 @@ partial class Build
.DependsOn(Compile)
.Executes(() =>
{
ReportSummary(s => s
.WhenNotNull(SemVer, (c, semVer) => c
.AddPair("Packed version", semVer)));

AbsolutePath packagesDirectory = ArtifactsDirectory / "Packages";
packagesDirectory.CreateOrCleanDirectory();

List<string> packages = new();
foreach (Project project in new[]
{
Solution.TestableIO_System_IO_Abstractions_Wrappers,
Expand All @@ -85,6 +83,7 @@ partial class Build
{
File.Move(package, packagesDirectory / Path.GetFileName(package));
Debug("Found nuget package: {PackagePath}", package);
packages.Add(Path.GetFileName(package));
}

foreach (string symbolPackage in
Expand All @@ -94,5 +93,7 @@ partial class Build
Debug("Found symbol package: {PackagePath}", symbolPackage);
}
}
ReportSummary(s => s
.AddPair("Packages", string.Join(", ", packages)));
});
}

0 comments on commit 19aeed3

Please sign in to comment.