using Nuke.Common; using Nuke.Common.IO; using Nuke.Common.ProjectModel; using Nuke.Common.Tools.DotNet; using static Nuke.Common.Tools.DotNet.DotNetTasks; partial class Build : NukeBuild { /// Support plugins are available for: /// - JetBrains ReSharper https://nuke.build/resharper /// - JetBrains Rider https://nuke.build/rider /// - Microsoft VisualStudio https://nuke.build/visualstudio /// - Microsoft VSCode https://nuke.build/vscode public static int Main () => Execute<Build>(x => x.Compile); [Parameter("Configuration to build - Default is 'Debug' (local) or 'Release' (server)")] readonly Configuration Configuration = IsLocalBuild ? Configuration.Debug : Configuration.Release; [Solution] readonly Solution Solution; Target Clean => _ => _ .Before(Restore) .Executes(() => { AbsolutePath.Create(WorkingDirectory).CreateOrCleanDirectory(); }); Target Restore => _ => _ .Executes(() => { DotNetRestore(s => s .SetProjectFile(Solution)); }); Target Compile => _ => _ .DependsOn(Restore) .Executes(() => { DotNetBuild(s => s .SetProjectFile(Solution) .SetConfiguration(Configuration) .EnableNoRestore()); }); Target UnitTests => _ => _ .DependsOn(Compile) .Executes(() => { DotNetTest(s => s .SetProjectFile(Solution) .SetFilter("UnitTests") .SetConfiguration(Configuration) .EnableNoRestore() .EnableNoBuild()); }); Target ArchitectureTests => _ => _ .DependsOn(UnitTests) .Executes(() => { DotNetTest(s => s .SetProjectFile(Solution) .SetFilter("ArchTests") .SetConfiguration(Configuration) .EnableNoRestore() .EnableNoBuild()); }); Target BuildAndUnitTests => _ => _ .Triggers(ArchitectureTests) .Executes(() => { }); }