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
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:
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
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:
- Config
- CI/CD
- Bootstrappers
- MSBuildΒ AutoβImports
<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
<root-directory>
βββ .github
β βββ workflows # GitHub Actions
β βββ *.yml
β
βββ .teamcity # TeamCity
β βββ settings.kts
β
βββ .gitlab-ci.yml # GitLab CI
βββ .space.kts # JetBrains Space
βββ .travis.yml # Travis CI
βββ appveyor.yml # AppVeyor
βββ appveyor.*.yml
βββ azure-pipelines.yml # Azure Pipelines
βββ azure-pipelines.*.yml
βββ bitrise.yml # Bitrise
<root-directory>
βββ build.cmd # Cross-platform
βββ build.ps1 # Windows/PowerShell
βββ build.sh # Linux/Shell
<root-directory>
βββ **
βββ Directory.Build.props
βββ Directory.Build.targets
You can deactivate linking of the above files by removing the NukeRootDirectory
and NukeScriptDirectory
properties from the build project file.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- <NukeRootDirectory>..</NukeRootDirectory> -->
<!-- <NukeScriptDirectory>..</NukeScriptDirectory> -->
</PropertyGroup>
</Project>