-
Notifications
You must be signed in to change notification settings - Fork 263
Expand file tree
/
Copy pathBuild.Compile.cs
More file actions
119 lines (103 loc) · 3.37 KB
/
Build.Compile.cs
File metadata and controls
119 lines (103 loc) · 3.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
using System;
using System.Linq;
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;
using static Nuke.Common.Tools.DotNet.DotNetTasks;
// ReSharper disable AllUnderscoreLocalParameterName
namespace Build;
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)
{
string buildNumber = GitHubActions.RunNumber.ToString();
Console.WriteLine(
$"Branch spec is a pull request. Adding build number {buildNumber}");
SemVer = string.Join('.', GitVersion.SemVer.Split('.').Take(3).Union([buildNumber,]));
}
Console.WriteLine($"SemVer = {SemVer}");
});
Target Clean => _ => _
.Unlisted()
.Before(Restore)
.Executes(() =>
{
ArtifactsDirectory.CreateOrCleanDirectory();
Log.Information("Cleaned {path}...", ArtifactsDirectory);
TestResultsDirectory.CreateOrCleanDirectory();
Log.Information("Cleaned {path}...", TestResultsDirectory);
});
Target Restore => _ => _
.Unlisted()
.DependsOn(Clean)
.Executes(() =>
{
DotNetRestore(s => s
.SetProjectFile(Solution)
.EnableNoCache()
.SetConfigFile(RootDirectory / "nuget.config"));
});
Target Compile => _ => _
.DependsOn(Restore)
.DependsOn(CalculateNugetVersion)
.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..] : "";
}
ReportSummary(s => s
.WhenNotNull(SemVer, (summary, semVer) => summary
.AddPair("Version", MainVersion.FileVersion + MainVersion.PreRelease)));
DotNetBuild(s => s
.SetProjectFile(Solution)
.SetConfiguration(Configuration)
.EnableNoLogo()
.EnableNoRestore()
.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);
}
}
}