-
-
Notifications
You must be signed in to change notification settings - Fork 986
/
Copy pathBuildRunner.cs
119 lines (104 loc) · 3.81 KB
/
BuildRunner.cs
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 Cake.Common.Build;
using Cake.Common.Diagnostics;
using Cake.Common.IO;
using Cake.Common.Tools.DotNet;
using Cake.Common.Tools.DotNet.Build;
using Cake.Common.Tools.DotNet.Pack;
using Cake.Common.Tools.DotNet.Restore;
using Cake.Common.Tools.DotNet.Workload.Install;
using Cake.Core;
using Cake.Core.IO;
using System.Linq;
namespace BenchmarkDotNet.Build.Runners;
public class BuildRunner
{
private readonly BuildContext context;
public BuildRunner(BuildContext context)
{
this.context = context;
}
public void PackWeaver()
{
var weaverPath = context.AllPackableSrcProjects.Single(p => p.GetFilename() == "BenchmarkDotNet.Weaver.csproj");
context.DotNetRestore(weaverPath.GetDirectory().FullPath,
new DotNetRestoreSettings
{
MSBuildSettings = context.MsBuildSettingsRestore
});
context.Information("BuildSystemProvider: " + context.BuildSystem().Provider);
context.DotNetBuild(weaverPath.FullPath, new DotNetBuildSettings
{
NoRestore = true,
DiagnosticOutput = true,
MSBuildSettings = context.MsBuildSettingsBuild,
Configuration = context.BuildConfiguration,
Verbosity = context.BuildVerbosity
});
context.DotNetPack(weaverPath.FullPath, new DotNetPackSettings
{
OutputDirectory = weaverPath.GetDirectory().Combine("packages"),
MSBuildSettings = context.MsBuildSettingsPack,
Configuration = context.BuildConfiguration
});
}
public void Restore()
{
context.DotNetRestore(context.SolutionFile.FullPath,
new DotNetRestoreSettings
{
MSBuildSettings = context.MsBuildSettingsRestore
});
}
public void InstallWorkload(string workloadId)
{
context.DotNetWorkloadInstall(workloadId,
new DotNetWorkloadInstallSettings
{
IncludePreviews = true,
NoCache = true
});
}
public void Build()
{
context.Information("BuildSystemProvider: " + context.BuildSystem().Provider);
context.DotNetBuild(context.SolutionFile.FullPath, new DotNetBuildSettings
{
NoRestore = true,
DiagnosticOutput = true,
MSBuildSettings = context.MsBuildSettingsBuild,
Configuration = context.BuildConfiguration,
Verbosity = context.BuildVerbosity
});
}
public void BuildProjectSilent(FilePath projectFile)
{
context.DotNetBuild(projectFile.FullPath, new DotNetBuildSettings
{
NoRestore = false,
DiagnosticOutput = false,
MSBuildSettings = context.MsBuildSettingsBuild,
Configuration = context.BuildConfiguration,
Verbosity = DotNetVerbosity.Quiet
});
}
public void Pack()
{
context.CleanDirectory(context.ArtifactsDirectory);
var settingsSrc = new DotNetPackSettings
{
OutputDirectory = context.ArtifactsDirectory,
ArgumentCustomization = args => args.Append("--include-symbols").Append("-p:SymbolPackageFormat=snupkg").Append("-p:IsFullPack=true"),
MSBuildSettings = context.MsBuildSettingsPack,
Configuration = context.BuildConfiguration
};
foreach (var project in context.AllPackableSrcProjects)
context.DotNetPack(project.FullPath, settingsSrc);
var settingsTemplate = new DotNetPackSettings
{
OutputDirectory = context.ArtifactsDirectory,
MSBuildSettings = context.MsBuildSettingsPack,
Configuration = context.BuildConfiguration
};
context.DotNetPack(context.TemplatesTestsProjectFile.FullPath, settingsTemplate);
}
}