Skip to main content

Build Setup

After installing the NUKE global tool, you can call it from anywhere on your machine to set up a new build:

nuke :setup
tip

Preferably, you should run the setup from inside an existing repository. NUKE will search for the next upwards .git or .svn directory to determine the build root directory. If neither is found, it will use the current directory. You can also pass the --root parameter to specify that the current directory should be used as a root directory.

During the setup, you'll be asked several questions to configure your build to your preferences:

Use Space to pause/play, โฌ… and โฎ• to seek backward/forward, or F to fullscreen.

Congratulations! ๐Ÿฅณ Your first build has now been set up, and you can run the build with the default implementation!

Effective Changesโ€‹

The setup will create a number of files in your repository and โ€“ if you've chosen so โ€“ add the build project to your solution file. Below, you can examine the structure of added files and what they are used for:

<root-directory>
โ”œโ”€โ”€ .nuke # Root directory marker
โ”‚ โ”œโ”€โ”€ build.schema.json # Build schema file
โ”‚ โ””โ”€โ”€ parameters.json # Default parameters file
โ”‚
โ”œโ”€โ”€ build
โ”‚ โ”œโ”€โ”€ .editorconfig # Common formatting
โ”‚ โ”œโ”€โ”€ _build.csproj # Build project file
โ”‚ โ”œโ”€โ”€ _build.csproj.DotSettings # ReSharper/Rider formatting
โ”‚ โ”œโ”€โ”€ Build.cs # Default build implementation
โ”‚ โ”œโ”€โ”€ Directory.Build.props # MSBuild stop files
โ”‚ โ””โ”€โ”€ Directory.Build.targets
โ”‚
โ”œโ”€โ”€ build.cmd # Cross-platform bootstrapping
โ”œโ”€โ”€ build.ps1 # Windows/PowerShell bootstrapping
โ””โ”€โ”€ build.sh # Linux/Shell bootstrapping
note

If you prefer, you may choose to delete any of the bootstrapping scripts, MSBuild stop files, or formatting settings. For instance, when you're sure that no other MSBuild files will interfere with the build project, or you don't rely on either Roslyn or ReSharper/Rider for formatting. However, note that the bootstrapping scripts play an essential role in CI/CD environments, and are also used for the configuration generation feature.

Project Structureโ€‹

While you can enjoy writing most build-relevant logic inside your build console applications, there is still a large number of files involved in the general process of build automation. NUKE organizes these files in different folders as linked files in the build project for you:

<root-directory>
โ”œโ”€โ”€ .nuke
โ”‚ โ”œโ”€โ”€ parameters.json # Parameters files
โ”‚ โ””โ”€โ”€ parameters.*.json
โ”‚
โ”œโ”€โ”€ GitVersion.yml # GitVersion configuration
โ”œโ”€โ”€ global.json # SDK version
โ”œโ”€โ”€ nuget.config # NuGet feeds configuration
โ””โ”€โ”€ version.json # Nerdbank GitVersioning configuration
info

You can deactivate linking of the above files by removing the NukeRootDirectory and NukeScriptDirectory properties from the build project file.

_build.csproj
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<!-- <NukeRootDirectory>..</NukeRootDirectory> -->
<!-- <NukeScriptDirectory>..</NukeScriptDirectory> -->
</PropertyGroup>

</Project>