Skip to content

chore: migrate the build pipeline from NUKE to Fallout - #142

Merged
vbreuss merged 1 commit into
mainfrom
chore/migrate-nuke-to-fallout
Sep 5, 2026
Merged

chore: migrate the build pipeline from NUKE to Fallout#142
vbreuss merged 1 commit into
mainfrom
chore/migrate-nuke-to-fallout

Conversation

@vbreuss

@vbreuss vbreuss commented Sep 4, 2026

Copy link
Copy Markdown
Member

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.

@vbreuss vbreuss self-assigned this Sep 4, 2026
Copilot AI lite review requested due to automatic review settings September 4, 2026 17:04
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.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 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 to Fallout.* (including Fallout.Solutions for former Nuke.Common.ProjectModel usage).
  • Update build bootstrapping and CI workflows to use the .NET 10.0.3xx SDK band and add pins for Fallout.* + NuGet.Frameworks.
  • Introduce .fallout configuration (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, the NoLogo option 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.

@vbreuss
vbreuss force-pushed the chore/migrate-nuke-to-fallout branch from f91d459 to d2ebf82 Compare September 4, 2026 17:13
@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown

Test Results

   19 files  +   18     19 suites  +18   20s ⏱️ +20s
  555 tests +  551    554 ✅ +  551  1 💤 ±0  0 ❌ ±0 
3 298 runs  +3 294  3 297 ✅ +3 294  1 💤 ±0  0 ❌ ±0 

Results for commit d2ebf82. ± Comparison against base commit 4c47a52.

@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown

👽 Mutation Results

Mutation testing badge

aweXpect.Web

Details
File Score Killed Survived Timeout No Coverage Ignored Compile Errors Runtime Errors Total Detected Total Undetected Total Mutants

The final mutation score is NaN%

Coverage Thresholds: high:80 low:60 break:0

@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown

🚀 Benchmark Results

Details

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.4 LTS (Noble Numbat)
AMD EPYC 7763 2.45GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.303
[Host] : .NET 8.0.30 (8.0.30, 8.0.3026.36720), X64 RyuJIT x86-64-v3
DefaultJob : .NET 8.0.30 (8.0.30, 8.0.3026.36720), X64 RyuJIT x86-64-v3

Method Mean Error StdDev Gen0 Allocated
Content_aweXpect 547.2 ns 2.89 ns 2.41 ns 0.0648 1088 B
SuccessStatusCode_aweXpect 293.0 ns 1.25 ns 1.17 ns 0.0510 856 B

@sonarqubecloud

sonarqubecloud Bot commented Sep 5, 2026

Copy link
Copy Markdown

@vbreuss
vbreuss merged commit d1590ee into main Sep 5, 2026
19 of 20 checks passed
@vbreuss
vbreuss deleted the chore/migrate-nuke-to-fallout branch September 5, 2026 05:15
@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown

This is addressed in release v1.8.0.

@github-actions github-actions Bot added the state: released The issue is released label Sep 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

state: released The issue is released

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants