Skip to content

Move recipe build tooling to .NET 10 - #136

Merged
oznetmaster merged 1 commit into
mainfrom
build/net10-recipe
Nov 2, 2026
Merged

oznetmaster merged 1 commit into
mainfrom
build/net10-recipe

Conversation

@oznetmaster

Copy link
Copy Markdown
Contributor

global.json still selected SDK 8 even though the runner/engine has moved to .NET 10 and the workflows installed newer SDKs. Select SDK 10 and update both CI and draft-release setup to match. Keep the existing tool versions pinned.

GitReleaseManager.Tool 0.20.0 is still the latest public release and targets .NET 8/9. To allow the .NET 10 build to work without those older runtimes:

  • Enable roll-forward only for that local-manifest tool.
  • Pass DOTNET_ROLL_FORWARD=Major only to GitReleaseManager child processes launched by the recipe. Apply it to all five existing create/export/add-assets/close calls; no job-wide override is added.
  • Check local-manifest startup in both workflows with the read-only showconfig command, and add a smoke case for the Cake-installed tool using the same process settings. GitReleaseManager's --version returns 1 in the pinned release, so showconfig supplies a genuine successful exit without ignoring a failure.

Validation from a private clone using an isolated Windows x64 .NET installation containing only SDK 10.0.403 and Microsoft.NETCore.App 10.0.14:

  • Tool restore and both release-tool startup paths pass.
  • 102 behavior cases and two real Cake smoke cases pass (104 total).
  • The old Cake tool fails to launch without the scoped runtime fallback.
  • Removing either the manifest roll-forward flag or the recipe's major roll-forward causes its corresponding negative control to fail; restored source passes again.
  • Host tracing confirms the release-tool process binds to the isolated .NET 10 runtime.
  • Version resolution runs, and the normal Package target creates, installs and verifies 0.0.0-net10-verification using a private sibling local feed. Packaged recipe sources match the commit.
  • The draft-release target loads with --nopush and its existing production-version policy skips creation. No release API operation, remote upload or publication was performed during these probes.

Native Linux execution and actual release publication have not been tested in this follow-up. Roll-forward is a compatibility bridge for the pinned tool, not a claim that GitReleaseManager publishes a native .NET 10 build. Its upstream 0.20.0 release is https://github.com/GitTools/GitReleaseManager/releases/tag/0.20.0.

Runner/agent test-runtime support is unchanged. CI test-before-package ordering, report upload on failure, triggers and publication policies remain intact. The change builds on merged #135 and its reviewed .NET 10 discussion.

Prepared by Neil Colvin with assistance from OpenAI Codex.

Keep tool versions pinned and allow only GitReleaseManager to roll forward when its older target runtime is absent. Check both manifest and Cake-installed tool startup with a read-only command; keep release operations behind existing policies.

Co-authored-by: OpenAI Codex <noreply@openai.com>
@CharliePoole

Copy link
Copy Markdown
Member

@oznetmaster I merged this locally and used it to build the runner and engine, switching the #load commands at the top of build.cake. Everything runs as expected.

Copy link
Copy Markdown
Contributor Author

@CharliePoole Thanks for testing it against the runner and engine. Together with the passing hosted tests, that gives us both recipe and consumer validation. I’ll mark it ready for review if you’re satisfied with the scope.

@CharliePoole
CharliePoole marked this pull request as ready for review November 2, 2026 18:19
@CharliePoole
CharliePoole self-requested a review November 2, 2026 18:19

@CharliePoole CharliePoole left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I marked it ready myself. :-)

@oznetmaster
oznetmaster merged commit d546405 into main Nov 2, 2026
2 checks passed
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