/ build / Build.cs
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  }