diff --git a/.nuke/build.schema.json b/.nuke/build.schema.json index fa2e337741..fb620ad8d9 100644 --- a/.nuke/build.schema.json +++ b/.nuke/build.schema.json @@ -6,6 +6,15 @@ "build": { "type": "object", "properties": { + "Configuration": { + "type": "string", + "description": "The solution configuration to build. Default is 'Debug' (local) or 'CI' (server)", + "enum": [ + "CI", + "Debug", + "Release" + ] + }, "Continue": { "type": "boolean", "description": "Indicates to continue a previously failed build attempt" diff --git a/Build/Build.cs b/Build/Build.cs index 0b4aa96fa8..338362799a 100644 --- a/Build/Build.cs +++ b/Build/Build.cs @@ -40,6 +40,9 @@ class Build : NukeBuild string PullRequestBase => GitHubActions?.BaseRef; + [Parameter("The solution configuration to build. Default is 'Debug' (local) or 'CI' (server).")] + readonly Configuration Configuration = IsLocalBuild ? Configuration.Debug : Configuration.CI; + [Parameter("Use this parameter if you encounter build problems in any way, " + "to generate a .binlog file which holds some useful information.")] readonly bool? GenerateBinLog; @@ -126,7 +129,7 @@ class Build : NukeBuild DotNetBuild(s => s .SetProjectFile(Solution) - .SetConfiguration(Configuration.CI) + .SetConfiguration(Configuration) .When(GenerateBinLog is true, _ => _ .SetBinaryLog(ArtifactsDirectory / $"{Solution.Core.FluentAssertions.Name}.binlog") ) @@ -145,7 +148,7 @@ class Build : NukeBuild Project project = Solution.Specs.Approval_Tests; DotNetTest(s => s - .SetConfiguration(Configuration.Release) + .SetConfiguration(Configuration) .SetProcessEnvironmentVariable("DOTNET_CLI_UI_LANGUAGE", "en-US") .EnableNoBuild() .SetResultsDirectory(TestResultsDirectory) @@ -284,7 +287,7 @@ from framework in supportedFrameworks select new { project, framework }; DotNetTest(s => s - .SetConfiguration(Configuration.Debug) + .SetConfiguration(Configuration) .SetProcessEnvironmentVariable("DOTNET_CLI_UI_LANGUAGE", "en-US") .EnableNoBuild() .SetDataCollector("XPlat Code Coverage") @@ -318,7 +321,7 @@ from framework in supportedFrameworks DotNetPack(s => s .SetProject(Solution.Core.FluentAssertions) .SetOutputDirectory(ArtifactsDirectory) - .SetConfiguration(Configuration.Release) + .SetConfiguration(Configuration == Configuration.Debug ? "Debug" : "Release") .EnableNoLogo() .EnableNoRestore() .EnableContinuousIntegrationBuild() // Necessary for deterministic builds diff --git a/Build/Configuration.cs b/Build/Configuration.cs index 63b8965fad..79a1433858 100644 --- a/Build/Configuration.cs +++ b/Build/Configuration.cs @@ -4,11 +4,9 @@ [TypeConverter(typeof(TypeConverter))] public class Configuration : Enumeration { - public static Configuration Debug { get; } = new() { Value = nameof(Debug) }; + public static Configuration Debug = new() { Value = nameof(Debug) }; - public static Configuration Release { get; } = new() { Value = nameof(Release) }; - - public static Configuration CI { get; } = new() { Value = nameof(CI) }; + public static Configuration CI = new() { Value = nameof(CI) }; public static implicit operator string(Configuration configuration) {