Build.cs
1 using System; 2 using System.Linq; 3 using Nuke.Common; 4 using Nuke.Common.Execution; 5 using Nuke.Common.Git; 6 using Nuke.Common.ProjectModel; 7 using Nuke.Common.Tooling; 8 using Nuke.Common.Tools.DotNet; 9 using Nuke.Common.Tools.GitVersion; 10 using Nuke.Common.Utilities.Collections; 11 using static Nuke.Common.EnvironmentInfo; 12 using static Nuke.Common.IO.FileSystemTasks; 13 using static Nuke.Common.IO.PathConstruction; 14 using static Nuke.Common.Tools.DotNet.DotNetTasks; 15 16 [CheckBuildProjectConfigurations] 17 [UnsetVisualStudioEnvironmentVariables] 18 class Build : NukeBuild 19 { 20 /// Support plugins are available for: 21 /// - JetBrains ReSharper https://nuke.build/resharper 22 /// - JetBrains Rider https://nuke.build/rider 23 /// - Microsoft VisualStudio https://nuke.build/visualstudio 24 /// - Microsoft VSCode https://nuke.build/vscode 25 26 public static int Main () => Execute<Build>(x => x.Publish); 27 28 [Parameter("Configuration to build - Default is 'Debug' (local) or 'Release' (server)")] 29 readonly Configuration Configuration = IsLocalBuild ? Configuration.Debug : Configuration.Release; 30 31 [Solution] readonly Solution Solution; 32 [GitRepository] readonly GitRepository GitRepository; 33 [GitVersion] readonly GitVersion GitVersion; 34 35 AbsolutePath SourceDirectory => RootDirectory / "src"; 36 AbsolutePath TestsDirectory => RootDirectory / "tests"; 37 AbsolutePath ArtifactsDirectory => RootDirectory / "../artifacts"; 38 39 Target Clean => _ => _ 40 .Before(Restore) 41 .Executes(() => 42 { 43 SourceDirectory.GlobDirectories("**/bin", "**/obj").ForEach(DeleteDirectory); 44 TestsDirectory.GlobDirectories("**/bin", "**/obj").ForEach(DeleteDirectory); 45 EnsureCleanDirectory(ArtifactsDirectory); 46 }); 47 48 Target Restore => _ => _ 49 .Executes(() => 50 { 51 DotNetRestore(s => s 52 .SetProjectFile(Solution)); 53 }); 54 55 Target Compile => _ => _ 56 .DependsOn(Restore) 57 .Executes(() => 58 { 59 DotNetBuild(s => s 60 .SetProjectFile(Solution) 61 .SetConfiguration(Configuration) 62 .SetAssemblyVersion(GitVersion.GetNormalizedAssemblyVersion()) 63 .SetFileVersion(GitVersion.GetNormalizedFileVersion()) 64 .SetInformationalVersion(GitVersion.InformationalVersion) 65 .EnableNoRestore()); 66 }); 67 68 Target Publish => _ => _ 69 .DependsOn(Compile) 70 .Executes(() => 71 { 72 DotNetPublish(s => s 73 .SetConfiguration(Configuration.Release) 74 75 .SetOutput(ArtifactsDirectory)); 76 }); 77 78 Target PushGhPages => _ => _ 79 .DependsOn(Publish) 80 .Executes(() => 81 { 82 Nuke.Common.GitTool.Git(s => s 83 .SetConfiguration(Configuration.Release) 84 85 .SetOutput(ArtifactsDirectory)); 86 }); 87 88 }