Skip to content

Remove Nuke; switch CI and release to direct dotnet calls - #9772

Merged
glen-84 merged 2 commits into
mainfrom
gai/remove-nuke-build-automation
May 22, 2026
Merged

glen-84 merged 2 commits into
mainfrom
gai/remove-nuke-build-automation

Conversation

@glen-84

@glen-84 glen-84 commented May 22, 2026

Copy link
Copy Markdown
Member

Summary

  • Remove Nuke from the repository. CI's matrix generation moves to a small composite action that reads src/All.slnx; release-time pack/publish/publishaot move to direct dotnet pack / dotnet nuget push / dotnet publish invocations.
  • Add a committed src/Build.Pack.slnx scoped to exactly the projects that emit nupkgs today (152 of them). It also picks up HotChocolate.Text.Json, which was missing from Nuke's hardcoded .build/Helpers.cs directory list and so was never packed despite living in src/. Generation criteria mirror Nuke's Helpers.cs + PackLocal filter (area-directory list, exclude benchmark/demo/sample/example paths, exclude filenames ending in tests) and additionally exclude any csproj with <IsPackable>false</IsPackable>. Replaces Nuke's auto-generated Build.Pack.sln.
  • Rewrite init.sh / accept.sh as bash; add init.ps1 / accept.ps1 as PowerShell counterparts (Windows PowerShell 5.1 compatible, no pwsh install required). Drop init.cmd / accept.cmd — modern Windows runs local .ps1 files directly under the default RemoteSigned execution policy.
  • Delete .build/, .nuke/, .config/, build.sh, build.ps1, build.cmd. Update .gitignore (drop Nuke-generated .sln entries) and CONTRIBUTING.md (remove Nuke mention).
  • This is PR 3 of the planned Nuke removal series (PR 1 = Remove HotChocolate.Types.Shared and unused build tooling #9764, PR 2 = Convert HotChocolate.Templates to csproj-based template package #9769).

Notable behavior changes

  • Test matrix gains HotChocolate.Text.Json.Tests — the HotChocolate/Json area was missing from Nuke's hardcoded .build/Helpers.cs directory list, so these tests never ran in CI. The new slnx-driven matrix picks them up, closing a long-standing gap.
  • Test matrix gains Demo.Catalog.Tests — Nuke's filename filter dropped anything containing demo. The project lives under src/Mocha/test/ and looks like a real test project. If it shouldn't run in CI, options are to rename it or add an explicit exclude in .github/actions/generate-test-matrix/action.yml.
  • Release packs gain HotChocolate.Text.Json — same Json-area gap, on the pack side. Net change: +1 published nupkg per release. No projects removed from the pack set.

Test plan

  • dotnet sln src/Build.Pack.slnx list — returns the expected 152 projects.
  • dotnet restore src/Build.Pack.slnx — restores cleanly (the Marten NU1904 warning is pre-existing).
  • Matrix-gen jq pipeline ran locally against src/All.slnx — produces 126 entries including the two newly-added test projects above.
  • accept.ps1 tested on Linux via pwsh against a synthetic __mismatch__/ layout (overwrites existing snapshots, deletes nested mismatches, removes the directory).
  • init.ps1 parse-checked under pwsh.
  • Templates package conversion was validated end-to-end in PR 2 (Convert HotChocolate.Templates to csproj-based template package #9769); that path is unchanged here.
  • All dotnet pack / dotnet publish invocations use -p: instead of /p: to dodge MSYS path-conversion on the Windows runners in the build-nitro-cli matrix.
  • No release-side verification was run — no tag pushes, no publishes, no workflow re-runs. The next real tag push exercises pack / publish / publishaot end-to-end.

Copilot AI review requested due to automatic review settings May 22, 2026 14:22

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR removes Nuke-based build automation and replaces it with direct dotnet-driven CI/release steps plus lightweight helper scripts/actions. It shifts test-matrix generation to a composite action that reads src/All.slnx, and introduces a committed src/Build.Pack.slnx to drive release packing without Nuke.

Changes:

  • Remove Nuke tooling/config (.build/, .nuke/, dotnet-tools manifest) and legacy build.* entrypoints.
  • Update CI/coverage workflows to generate the test matrix via a composite action parsing src/All.slnx.
  • Update release workflow to pack/push/publish AOT binaries via direct dotnet commands; add new init/accept scripts (bash + PowerShell).

Reviewed changes

Copilot reviewed 33 out of 34 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/Build.Pack.slnx Adds a curated solution filter used for release-time dotnet pack.
init.sh Rewrites initialization to dotnet restore + yarn (bash).
init.ps1 Adds PowerShell init script equivalent for Windows.
init.cmd Removes legacy Windows CMD init entrypoint.
dictionary.txt Adds terms related to the new tooling/scripts.
CONTRIBUTING.md Updates contributor docs to reflect Nuke removal and new init flow.
build.sh Removes Nuke-based build entrypoint (bash).
build.ps1 Removes Nuke-based build entrypoint (PowerShell).
build.cmd Removes legacy CMD wrapper for build.
accept.sh Rewrites snapshot acceptance script in bash (replaces Nuke target).
accept.ps1 Adds PowerShell snapshot acceptance script equivalent.
accept.cmd Removes legacy Windows CMD accept entrypoint.
.nuke/parameters.json Removes Nuke parameters file.
.gitignore Removes ignores for Nuke-specific artifacts/auto-generated solutions.
.github/workflows/release.yml Switches pack/push/publish to direct dotnet calls; adds template version stamping; updates AOT publish step.
.github/workflows/coverage.yml Switches matrix generation to the composite action.
.github/workflows/ci.yml Switches matrix generation to the composite action.
.github/actions/generate-test-matrix/action.yml Adds composite action that builds the CI matrix from src/All.slnx.
.config/dotnet-tools.json Removes Nuke global tool manifest.
.build/Helpers.cs Removes Nuke helper utilities (deleted).
.build/Build.Version.cs Removes Nuke version logic (deleted).
.build/Build.Tests.cs Removes Nuke test/coverage orchestration (deleted).
.build/Build.Tests.2.cs Removes Nuke test orchestration (deleted).
.build/Build.Sonar.cs Removes Nuke Sonar integration (deleted).
.build/Build.slnx Removes Nuke build solution filter (deleted).
.build/Build.Secrets.cs Removes Nuke secret parameters (deleted).
.build/Build.Publish.cs Removes Nuke pack/publish/publishaot targets (deleted).
.build/Build.Nitro.cs Removes Nuke Nitro updater target (deleted).
.build/Build.GitHub.cs Removes Nuke GitHub parameter plumbing (deleted).
.build/Build.Environment.cs Removes Nuke build environment constants/paths (deleted).
.build/Build.csproj.DotSettings Removes IDE settings tied to Nuke build project (deleted).
.build/Build.csproj Removes Nuke build project itself (deleted).
.build/Build.cs Removes Nuke entrypoint/targets (deleted).
.build/.editorconfig Removes editorconfig scoped to Nuke build sources (deleted).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread init.sh Outdated
Comment thread init.ps1 Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 33 out of 34 changed files in this pull request and generated 1 comment.

Comment thread accept.ps1
@glen-84
glen-84 merged commit b62ae44 into main May 22, 2026
145 checks passed
@glen-84
glen-84 deleted the gai/remove-nuke-build-automation branch May 22, 2026 15:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants