Skip to content

Migrate build system from NUKE to Fallout - #227

Merged
dennisdoomen merged 5 commits into
mainfrom
claude/nuke-fallout-migration-aacceb
Aug 17, 2026
Merged

Migrate build system from NUKE to Fallout#227
dennisdoomen merged 5 commits into
mainfrom
claude/nuke-fallout-migration-aacceb

Conversation

@dennisdoomen

Copy link
Copy Markdown
Owner

What

Migrates the build project from NUKE to Fallout, its hard-fork successor, using the fallout-migrate CLI as documented at https://docs.fallout.build/docs/migration/from-nuke.

Changes

Automated by fallout-migrate:

  • Build/_build.csproj: Nuke.* package references → Fallout.* 10.4.0; target framework net9.0net10.0 (Fallout's minimum); Nuke*Directory MSBuild properties → Fallout*Directory
  • Build/Build.cs, Build/Configuration.cs: using Nuke.*using Fallout.*; NukeBuild base class → FalloutBuild
  • build.ps1, build.sh: temp directory path .nuke/temp.fallout/temp
  • .nuke/.fallout/ (renamed; build.schema.json regenerated with Fallout-specific parameter hints)

Manual follow-ups the migration tool doesn't handle automatically:

  • .github/workflows/build.yml: renamed the "Run NUKE" step for clarity (it still just runs ./build.ps1, no functional change)
  • agents.md, .github/copilot-instructions.md, README.md: updated local build instructions and doc links from the nuke CLI / nuke.build to the fallout CLI / docs.fallout.build

Verification

Build/_build.csproj compiles cleanly against the new Fallout.* packages (0 errors), and the target graph (Compile, RunTests, RunPackageGuard, Pack, …) resolves identically to before.

Running an actual target in this worktree currently fails at the GitVersion step (LibGit2Sharp can't read the git index here), but this is pre-existing and unrelated to the migration — I confirmed by temporarily stashing these changes and reproducing the identical failure against the original NUKE setup. It should not reproduce in a normal clone.

Not changed (flagged, optional follow-up)

  • build.ps1/build.sh still contain a dead NUKE_ENTERPRISE_TOKEN branch pointing at the old f.feedz.io/nuke/enterprise feed. It's inert unless that env var is set, but worth revisiting if you use a Fallout enterprise feed.
  • The migration guide mentions an optional compatibility shim (via a GitHub Packages PAT in nuget.config) for staged transitions — skipped since this is a full migration, not a gradual one.

🤖 Generated with Claude Code

Runs the fallout-migrate CLI (https://docs.fallout.build/docs/migration/from-nuke)
to move the build project off NUKE onto Fallout, its hard-fork successor:

- Build/_build.csproj: Nuke.* package references -> Fallout.* 10.4.0,
  target framework net9.0 -> net10.0 (Fallout's minimum), Nuke*Directory
  MSBuild properties -> Fallout*Directory
- Build/Build.cs, Build/Configuration.cs: using directives and base
  class/interface -> Fallout.* equivalents (NukeBuild -> FalloutBuild)
- build.ps1, build.sh: temp directory path .nuke/temp -> .fallout/temp
- .nuke/ -> .fallout/ (renamed; build.schema.json regenerated with
  Fallout-specific parameter hints)

Manual follow-ups the migration tool doesn't handle automatically:
- .github/workflows/build.yml: rename the "Run NUKE" step for clarity
- agents.md, .github/copilot-instructions.md, README.md: update local
  build instructions and doc links from the nuke CLI/nuke.build to the
  fallout CLI/docs.fallout.build

Verified Build/_build.csproj compiles cleanly against the Fallout
packages and the target graph resolves as before.
The previous run's "Build, Test, Analyze and Publish" job failed only on
two live-network Integration-tagged tests in
ParallelPackageRiskEnricherSpecs (GitHub API enrichment), and only under
the net10.0 test leg — the identical net9.0 leg in the same run passed.
That code path is untouched by this migration and already ran on net10.0
before this PR, so this looks like transient flakiness in tests that hit
live external services (GitHub API, securityscorecards.dev) rather than
a regression from the NUKE -> Fallout migration.

The stuck workflow run (its trailing "Publish Tests Results" job hung for
10+ minutes and didn't respond to a cancellation request) couldn't be
rerun through the GitHub API while "in progress", so retriggering with an
empty commit instead.
@github-actions

github-actions Bot commented Aug 16, 2026

Copy link
Copy Markdown

Test Results

  3 files  ±0    3 suites  ±0   4m 48s ⏱️ -8s
168 tests ±0  168 ✅ ±0  0 💤 ±0  0 ❌ ±0 
335 runs  ±0  335 ✅ ±0  0 💤 ±0  0 ❌ ±0 

Results for commit e9392c2. ± Comparison against base commit a739c42.

♻️ This comment has been updated with latest results.

Attempt 3's build/test job actually passed (RunTests succeeded), confirming
the two earlier failures were transient load on GitHub's API under this
enricher's heavy concurrent live-network fan-out, not a migration
regression. That attempt then failed on an unrelated step: coveralls
returned HTTP 503 ("Coveralls is temporarily rate-limited by the GitHub
API... please retry it in a few minutes"), a third-party outage.

The trailing "Publish Tests Results" job hung again for 10+ minutes and
didn't respond to a cancellation request, blocking a same-run rerun, so
retriggering with an empty commit as before.
ParallelPackageRiskEnricherSpecs.cs's two GitHub-integration tests pass
NullLogger.Instance to the enricher, so whatever HTTP error is causing
them to intermittently fail in CI (3 of 4 attempts so far on this PR) is
silently swallowed - RunTests just reports "found False" with no
underlying exception. Locally this reproduces as a 401 from an expired
dev GITHUB_API_KEY, confirmed via a temporary console logger.

Swapping in a real console logger for just these two tests so the next
CI run's output shows the actual status code/exception instead of
guessing. Will revert or keep depending on what it reveals.
@coveralls

coveralls commented Aug 16, 2026

Copy link
Copy Markdown

Coverage Report for CI Build 32054806288

Coverage increased (+0.01%) to 77.326%

Details

  • Coverage increased (+0.01%) from the base build.
  • Patch coverage: No coverable lines changed in this PR.
  • No coverage regressions found.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

No coverage regressions found.


Coverage Stats

Coverage Status
Relevant Lines: 5879
Covered Lines: 4725
Line Coverage: 80.37%
Relevant Branches: 2302
Covered Branches: 1601
Branch Coverage: 69.55%
Branches in Coverage %: Yes
Coverage Strength: 2052.85 hits per line

💛 - Coveralls

CI is green now (the earlier failures were confirmed intermittent - the
diagnostic run itself passed on the first try). Keeping the real logger
instead of NullLogger.Instance for these two tests since it costs
nothing on the happy path and means the next time GitHub API calls fail
intermittently in CI, the test output will show the actual status
code/exception instead of a bare assertion failure.
@dennisdoomen
dennisdoomen merged commit 6cd0a4f into main Aug 17, 2026
7 of 8 checks passed
@dennisdoomen
dennisdoomen deleted the claude/nuke-fallout-migration-aacceb branch August 17, 2026 18:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants