Smart automation for DevOps teams and CI/CD pipelines
Unmatched Productivity
Make yourself at home with build automation that is bootstrapped with simple .NET console applications and build steps that are defined as regular C# properties. No magic strings attached!
Enjoy first-class IDE integration. Features like code-completion, navigation, refactorings, and debugging are supported out-of-the-box! For improved development experience, you can install one of the support extensions.
class Build : NukeBuild
{
public static int Main() => Execute<Build>();
Target Restore => _ => _
.Executes(() =>
{
// Restore implementation
});
Target Compile => _ => _
.DependsOn(Restore)
.Executes(() =>
{
// Compile implementation
});
}
Use Space to pause/play, ⬅ and ⮕ to seek backward/forward, or F to fullscreen.
Get Started in Seconds
NUKE comes with a .NET global tool that provides a comfortable way to setup and execute your build projects right from your terminal.
dotnet tool install Nuke.GlobalTool --global
nuke :setup
nuke
With additional configuration, you can get your global tool to complete targets and parameters that are specific to your individual build.
Easy to Troubleshoot
Investigate issues on your local machine with all debugger features. Run build steps in isolation without changing dependencies.
Granular Versioning
Version your build project alongside your solution and use dedicated branches to implement and test new builds steps.
Reusable Components
Streamline your production by extracting common build steps and reusing them across all your projects.
[GitHubActions(
"deployment",
GitHubActionsImage.UbuntuLatest,
OnPushBranches = new[] { MainBranch },
InvokedTargets = new[] { nameof(Publish) },
ImportSecrets = new[] { nameof(NuGetApiKey) })]
class Build : NukeBuild
{
Target Pack => _ => _
.Produces(RootDirectory / "output" / "*.nupkg")
.Executes(() => { /* Pack implementation */ });
[Parameter] [Secret] readonly string NuGetApiKey;
Target Publish => _ => _
.Requires(() => NuGetApiKey)
.DependsOn(Pack)
.Executes(() => { /* Publish implementation */ });
}
Ready for CI/CD
Integrate your builds in CI/CD environments within seconds and without the usual YAML struggle. Apply one of the built-in attributes to generate configuration files based on your existing C# build definition. Every change is verified by the compiler!
With multi-agent CI/CD services you can easily parallelize time-consuming build steps, for example tests, to improve your build times! Other individual features like caching, secret imports, and publishing artifacts come preconfigured.
About our Community
Our community is actively speaking about NUKE at conferences and meetups around the world. Check out Unleash your build with NUKE presented by Todor Todorov at the DevOps Porto Meetup, which walks through some of the most distinguished features.
Community Sponsors:
NUKE has been a game changer in our build pipelines. Previously, the use of DSL-based build scripts meant that few people were comfortable making changes. Now, with our builds expressed in C#, change is no longer scary. We now get full IDE support (rather than errors from coding in a custom language), we get refactoring support, unit tests, and more.
Having worked with many different build tools, there was always something missing that ruined my productivity. Either the lack of proper IntelliSense, the (in)ability to refactor and debug my build scripts, or the need to build all kinds of custom plumbing. Nothing can match the experience of treating your build scripts as first-class citizens of your code-base. Everything works as you would expect from a current-generation build framework. So don't accept anything less.
What NUKE has saved me in pipeline integration could be measured in sprints. Annotate your build class with one attribute and your project is ready to add to the target CI/CD server - it feels magic! NUKE is the perfect tool for small and large teams alike - pure C# build scripts - easy to code review and grok.