![]() |
VOOZH | about |
dotnet add package NukeBuildHelpers --version 9.0.30
NuGet\Install-Package NukeBuildHelpers -Version 9.0.30
<PackageReference Include="NukeBuildHelpers" Version="9.0.30" />
<PackageVersion Include="NukeBuildHelpers" Version="9.0.30" />Directory.Packages.props
<PackageReference Include="NukeBuildHelpers" />Project file
paket add NukeBuildHelpers --version 9.0.30
#r "nuget: NukeBuildHelpers, 9.0.30"
#:package NukeBuildHelpers@9.0.30
#addin nuget:?package=NukeBuildHelpers&version=9.0.30Install as a Cake Addin
#tool nuget:?package=NukeBuildHelpers&version=9.0.30Install as a Cake Tool
NukeBuildHelpers is a C# project build automation tool built on top of NukeBuild. It supports both GitHub Actions and Azure Pipelines for CI/CD, enabling release management across multiple projects and environments within a single repository.
NuGet
| Name | Info |
|---|---|
| NukeBuildHelpers | 👁 NuGet |
To quickly set up a new project, use the NukeBuildTemplate repository template:
For a fast installation, you can also use the following one-liner in windows cmd or powershell:
Open either cmd or powershell
Navigate to your project directory
Paste the command:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell -c "& ([ScriptBlock]::Create((irm https://raw.githubusercontent.com/Kiryuumaru/NukeBuildTemplate/main/init.ps1)))"
If you already have a NukeBuild setup, you can install NukeBuildHelpers via NuGet:
dotnet add package NukeBuildHelpers
Build classChange the base class from NukeBuild to BaseNukeBuildHelpers:
class Build : BaseNukeBuildHelpers
{
...
}
Add your environment branches:
class Build : BaseNukeBuildHelpers
{
...
public override string[] EnvironmentBranches { get; } = [ "prerelease", "master" ];
public override string MainEnvironmentBranch { get; } = "master";
}
To create custom build flows, implement any of the target entries BuildEntry, TestEntry or PublishEntry.
BuildEntry Implementationclass Build : BaseNukeBuildHelpers
{
...
BuildEntry NukeBuildHelpersBuild => _ => _
.AppId("nuke_build_helpers")
.RunnerOS(RunnerOS.Ubuntu2204)
.Execute(context => {
var contextVersion = context.Apps.First().Value;
string version = contextVersion.AppVersion.Version.ToString();
string? releaseNotes = null;
if (contextVersion.BumpVersion != null)
{
version = contextVersion.BumpVersion.Version.ToString();
releaseNotes = contextVersion.BumpVersion.ReleaseNotes;
}
else if (contextVersion.PullRequestVersion != null)
{
version = contextVersion.PullRequestVersion.Version.ToString();
}
DotNetTasks.DotNetClean(_ => _
.SetProject(RootDirectory / "NukeBuildHelpers" / "NukeBuildHelpers.csproj"));
DotNetTasks.DotNetBuild(_ => _
.SetProjectFile(RootDirectory / "NukeBuildHelpers" / "NukeBuildHelpers.csproj")
.SetConfiguration("Release"));
DotNetTasks.DotNetPack(_ => _
.SetProject(RootDirectory / "NukeBuildHelpers" / "NukeBuildHelpers.csproj")
.SetConfiguration("Release")
.SetNoRestore(true)
.SetNoBuild(true)
.SetIncludeSymbols(true)
.SetSymbolPackageFormat("snupkg")
.SetVersion(version)
.SetPackageReleaseNotes(releaseNotes)
.SetOutputDirectory(contextVersion.OutputDirectory / "main"));
});
}
See documentation here
TestEntry Implementationclass Build : BaseNukeBuildHelpers
{
...
TestEntry NukeBuildHelpersTest => _ => _
.AppId("nuke_build_helpers")
.RunnerOS(RunnerOS.Ubuntu2204)
.Execute(context =>
{
var contextVersion = context.Apps.First().Value;
DotNetTasks.DotNetClean(_ => _
.SetProject(RootDirectory / "NukeBuildHelpers.UnitTest" / "NukeBuildHelpers.UnitTest.csproj"));
DotNetTasks.DotNetTest(_ => _
.SetProjectFile(RootDirectory / "NukeBuildHelpers.UnitTest" / "NukeBuildHelpers.UnitTest.csproj")
.SetResultsDirectory(contextVersion.OutputDirectory / "test-results"));
});
}
See documentation here
PublishEntry Implementationclass Build : BaseNukeBuildHelpers
{
...
PublishEntry NukeBuildHelpersPublish => _ => _
.AppId("nuke_build_helpers")
.RunnerOS(RunnerOS.Ubuntu2204)
.Execute(async context =>
{
var contextVersion = context.Apps.First().Value;
if (contextVersion.IsBump)
{
DotNetTasks.DotNetNuGetPush(_ => _
.SetSource("https://nuget.pkg.github.com/kiryuumaru/index.json")
.SetApiKey(GithubToken)
.SetTargetPath(contextVersion.OutputDirectory / "main" / "**"));
DotNetTasks.DotNetNuGetPush(_ => _
.SetSource("https://api.nuget.org/v3/index.json")
.SetApiKey(NuGetAuthToken)
.SetTargetPath(contextVersion.OutputDirectory / "main" / "**"));
}
// Add release assets
await AddReleaseAsset(contextVersion.OutputDirectory / "main");
});
}
See documentation here
NukeBuildHelpers now supports multiple applications in a single entry:
BuildEntry MultiAppBuild => _ => _
.AppId("frontend", "backend", "shared")
.Execute(context =>
{
foreach (var appContext in context.Apps.Values)
{
Log.Information("Building: {AppId} to {Output}",
appContext.AppId, appContext.OutputDirectory);
DotNetTasks.DotNetBuild(_ => _
.SetProjectFile(RootDirectory / appContext.AppId / $"{appContext.AppId}.csproj")
.SetOutputDirectory(appContext.OutputDirectory));
}
});
Generate GitHub and Azure Pipelines workflows using CLI commands:
# Generate GitHub workflow
build githubworkflow
# Generate Azure Pipelines workflow
build azureworkflow
These commands will generate azure-pipelines.yml and .github/workflows/nuke-cicd.yml respectively.
For advanced workflow configurations, you can utilize the WorkflowConfigEntry by overriding BaseNukeBuildHelpers.WorkflowConfig. See the documentation here for more details on customizing your workflows.
Use the build bump command to interactively bump the project version:
build bump
Fetch: Fetch git commits and tags.Version: Show the current version from all releases.Bump: Interactive, bump the version by validating and tagging.BumpAndForget: Interactive, bump and forget the version by validating and tagging.StatusWatch: Show the current version status from all releases.Test: Run tests.Build: Build the project.Publish: Publish the project.GithubWorkflow: Build the CI/CD workflow for GitHub.AzureWorkflow: Build the CI/CD workflow for Azure.The Version subcommand shows the current version from all releases. Example output from the subcommand:
╬═════════════════════╬═════════════╬════════════════════╬═════════════════════╬
║ App Id ║ Environment ║ Bumped Version ║ Published ║
╬═════════════════════╬═════════════╬════════════════════╬═════════════════════╬
║ nuke_build_helpers ║ prerelease ║ 2.1.0-prerelease.1 ║ 2.0.0-prerelease.8* ║
║ ║ master ║ 2.0.0 ║ yes ║
║---------------------║-------------║--------------------║---------------------║
║ nuke_build_helpers2 ║ prerelease ║ 0.1.0-prerelease.2 ║ no ║
║ ║ master ║ - ║ no ║
╬═════════════════════╬═════════════╬════════════════════╬═════════════════════╬
The StatusWatch subcommand continuously monitors the version status. Example output from the subcommand:
╬═════════════════════╬═════════════╬════════════════════╬═══════════════╬
║ App Id ║ Environment ║ Version ║ Status ║
╬═════════════════════╬═════════════╬════════════════════╬═══════════════╬
║ nuke_build_helpers ║ prerelease ║ 2.1.0-prerelease.2 ║ Published ║
║ ║ master ║ 2.0.0 ║ Published ║
║---------------------║-------------║--------------------║---------------║
║ nuke_build_helpers2 ║ prerelease ║ 0.1.0-prerelease.2 ║ Run Failed ║
║ ║ master ║ - ║ Not published ║
╬═════════════════════╬═════════════╬════════════════════╬═══════════════╬
Status types include:
For users upgrading from V8 to V9, please review the document for detailed migration guidance.
This project is licensed under the MIT License - see the file for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 is compatible. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 9.0.30 | 769 | 6/11/2026 |
| 9.0.29 | 554 | 6/10/2026 |
| 9.0.28 | 2,899 | 5/26/2026 |
| 9.0.27 | 13,491 | 5/19/2026 |
| 9.0.26 | 3,313 | 5/14/2026 |
| 9.0.25 | 2,121 | 5/12/2026 |
| 9.0.24 | 2,300 | 5/6/2026 |
| 9.0.23 | 593 | 5/5/2026 |
| 9.0.22 | 1,040 | 4/30/2026 |
| 9.0.21 | 93 | 4/30/2026 |
| 9.0.20 | 288 | 4/29/2026 |
| 9.0.19 | 663 | 4/28/2026 |
| 9.0.18 | 895 | 4/28/2026 |
| 9.0.17 | 961 | 4/22/2026 |
| 9.0.16 | 419 | 4/22/2026 |
| 9.0.15 | 1,233 | 4/18/2026 |
| 9.0.14 | 1,504 | 4/14/2026 |
| 9.0.13 | 2,029 | 4/7/2026 |
| 9.0.12 | 711 | 4/1/2026 |
| 9.0.11 | 749 | 3/25/2026 |
## New Version
* Bump `nuke_build_helpers` from `9.0.29` to `9.0.30`. See [changelog](https://github.com/Kiryuumaru/NukeBuildHelpers/compare/nuke_build_helpers/9.0.29...nuke_build_helpers/9.0.30)
## What's Changed
* Bump Microsoft.Build.Tasks.Core and Microsoft.Build.Utilities.Core by @dependabot[bot] in https://github.com/Kiryuumaru/NukeBuildHelpers/pull/287
**Full Changelog**: https://github.com/Kiryuumaru/NukeBuildHelpers/compare/build.20260610143510.246261c...build.20260611143353.14cf341