chore: migrate the build pipeline from NUKE to Fallout - #142
Conversation
NUKE no longer supports the .NET SDK the build agents install, so CI fails before it reaches any target. This ports the migration the core repository made in Testably/aweXpect#1017. - Rename `.nuke` to `.fallout` and point the Fallout global tool at `Pipeline/Build.csproj` through `BuildProjectFile` in `parameters.json`. - Replace Nuke.Common/Nuke.Components 10.1.0 with Fallout.Common/ Fallout.Components 10.4.0 and rewrite the pipeline namespaces: `Nuke.Common.ProjectModel` becomes `Fallout.Solutions`, everything else `Fallout.Common.*`. - Pin NuGet.Frameworks to 7.9.0: the SDK's MSBuild expects `NuGet.Frameworks 7.9.0.0` while the build host otherwise resolves 6.x transitively, which breaks in-process project evaluation. - Pin the SDK to the 10.0.3xx band in `global.json` and the workflows. `global.json`, the workflow `dotnet-version` lists and the NuGet.Frameworks pin have to be bumped together from now on. - Drop the NUKE enterprise feed handling from the bootstrap scripts and ignore `.fallout/temp/`. Fallout 10.4.0 is the latest listed release; the entire 11.0.x band is unlisted on nuget.org. Verified locally: the pipeline project compiles, `--help` lists every target, and `UnitTests` and `Pack` succeed in Release.
There was a problem hiding this comment.
🔵 Needs a closer look
It changes the repository’s build system and CI/tooling integration, which warrants a human validation pass across the supported OS/SDK matrix.
Pull request overview
Migrates the repository’s build tooling and CI configuration from NUKE to Fallout to restore compatibility with the installed .NET SDK on build agents and unblock CI execution.
Changes:
- Port pipeline code from
Nuke.*APIs toFallout.*(includingFallout.Solutionsfor formerNuke.Common.ProjectModelusage). - Update build bootstrapping and CI workflows to use the .NET
10.0.3xxSDK band and add pins forFallout.*+NuGet.Frameworks. - Introduce
.falloutconfiguration (schema + parameters) and ignore Fallout temporary output.
File summaries
| File | Description |
|---|---|
| Pipeline/Configuration.cs | Switch tooling import from NUKE to Fallout. |
| Pipeline/BuildExtensions.cs | Update GitHub Actions / tool imports to Fallout namespaces. |
| Pipeline/Build.UnitTest.cs | Port unit test target implementation to Fallout namespaces/tasks. |
| Pipeline/Build.Pack.cs | Port pack target implementation to Fallout namespaces/utilities. |
| Pipeline/Build.MutationTests.cs | Port mutation test automation to Fallout and update Octokit header. |
| Pipeline/Build.csproj | Replace NUKE packages/properties with Fallout equivalents; add NuGet.Frameworks reference. |
| Pipeline/Build.cs | Change build base type to FalloutBuild and update imports. |
| Pipeline/Build.Compile.cs | Port compile target to Fallout namespaces/tasks. |
| Pipeline/Build.CodeCoverage.cs | Port report generator usage to Fallout packages/tasks. |
| Pipeline/Build.CodeAnalysis.cs | Port SonarScanner usage to Fallout packages/tasks. |
| Pipeline/Build.Benchmarks.cs | Port benchmarks automation to Fallout and update Octokit header. |
| Pipeline/Build.ApiChecks.cs | Port API checks target to Fallout namespaces/tasks. |
| global.json | Pin SDK to 10.0.300 and roll forward within patch band. |
| Directory.Packages.props | Replace NUKE package pins with Fallout pins; add NuGet.Frameworks pin. |
| build.sh | Update temp directory to .fallout/temp and remove NUKE enterprise feed handling. |
| build.ps1 | Update temp directory to .fallout/temp and remove NUKE enterprise feed handling. |
| .gitignore | Ignore Fallout temp directory. |
| .github/workflows/ci.yml | Pin CI matrix to 10.0.3xx SDK band. |
| .github/workflows/ci-analysis.yml | Pin analysis workflows to 10.0.3xx SDK band. |
| .github/workflows/build.yml | Pin build workflow matrix to 10.0.3xx SDK band. |
| .github/dependabot.yml | Rename group/patterns from NUKE to Fallout packages. |
| .fallout/parameters.json | Add BuildProjectFile to point Fallout tool runner to Pipeline/Build.csproj. |
| .fallout/build.schema.json | Rename schema definition to FalloutBuild and extend schema with BuildProjectFile. |
Review details
Suppressed comments (1)
.fallout/build.schema.json:64
- After renaming the schema definition to
FalloutBuild, theNoLogooption description in this same definition still says "NUKE logo", which is misleading for users of the Fallout-based pipeline. Update the schema text to match the new tool name.
- Files reviewed: 22/23 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
f91d459 to
d2ebf82
Compare
🚀 Benchmark ResultsDetails
|
|
|
This is addressed in release v1.8.0. |



NUKE no longer supports the .NET SDK the build agents install, so CI fails before it reaches any target. This ports the migration the core repository made in Testably/aweXpect#1017.
.nuketo.falloutand point the Fallout global tool atPipeline/Build.csprojthroughBuildProjectFileinparameters.json.Nuke.Common.ProjectModelbecomesFallout.Solutions, everything elseFallout.Common.*.NuGet.Frameworks 7.9.0.0while the build host otherwise resolves 6.x transitively, which breaks in-process project evaluation.global.jsonand the workflows.global.json, the workflowdotnet-versionlists and the NuGet.Frameworks pin have to be bumped together from now on..fallout/temp/.Fallout 10.4.0 is the latest listed release; the entire 11.0.x band is unlisted on nuget.org.
Verified locally: the pipeline project compiles,
--helplists every target, andUnitTestsandPacksucceed in Release.