Replace NUKE build with plain dotnet CLI workflows - #519
Merged
Conversation
danielchalmers
changed the base branch from
claude/ci-trigger-pull-requests
to
dev
July 27, 2026 03:10
danielchalmers
force-pushed
the
claude/remove-nuke
branch
2 times, most recently
from
July 27, 2026 03:13
d7d08eb to
7d9266d
Compare
The NUKE build wrapped a handful of `dotnet` CLI calls — restore, build,
pack, push — with no tests, no build matrix, and no platform-specific logic.
In exchange it cost an extra project (`build/_build.csproj` plus its
`Nuke.Common` dependency), the `.nuke` folder, three bootstrapper scripts,
and a layer of indirection: changing CI meant editing C# attributes in
`Build.cs` and regenerating the workflow YAML rather than editing the YAML
directly.
This mirrors the same change made in MudBlazor/ThemeManager.
Changes
- Deleted `build/`, `.nuke/`, `build.cmd`, `build.ps1`, and `build.sh`, and
removed `_build.csproj` from `src/MudBlazor.Templates.sln`. `_build` was
`IsPackable=false`, so package output is unchanged.
- Rewrote both workflows by hand to call `dotnet` directly:
- continuous — restore, build, pack, upload packages artifact.
- release — pack, push to nuget.org and GitHub Packages with
`--skip-duplicate`, upload packages artifact.
- Dropped the format check. `MudBlazor.Templates.csproj` sets
`<Compile Remove="**\*" />`, so with `_build` gone the solution has no
compile items and `dotnet format` verifies nothing.
- Added an explicit `permissions:` block to the release job
(`packages: write`) so the GitHub Packages push does not depend on the
repository's default token permissions.
- The NuGet cache key no longer references `global.json` or
`Directory.Packages.props`, neither of which exists in this repo, and now
has a `restore-keys` fallback.
danielchalmers
force-pushed
the
claude/remove-nuke
branch
from
July 27, 2026 03:49
7d9266d to
cc54d5b
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ports MudBlazor/ThemeManager#46.
build/Build.cshere was structurally identical to ThemeManager's, so the reasoning carries over unchanged.NUKE wrapped a handful of
dotnetCLI calls with no tests, no build matrix, and no platform-specific logic. In exchange it cost an extra project (_build.csprojplusNuke.Common), the.nukefolder, three bootstrapper scripts, and a layer of indirection — changing CI meant editing C# attributes and regenerating YAML instead of editing the YAML.Changes
build/,.nuke/,build.cmd,build.ps1,build.sh, and removed_build.csprojfromsrc/MudBlazor.Templates.sln.continuous.yml(restore → build → pack → upload) andrelease.yml(pack → push to nuget.org + GitHub Packages → upload) to calldotnetdirectly.MudBlazor.Templates.csprojsets<Compile Remove="**\*" />, so with_buildgone the solution has no compile items anddotnet formatverified nothing.permissions: packages: writeto the release job so the GitHub Packages push doesn't rely on the repo's default token permissions.global.jsonorDirectory.Packages.props(neither exists here); added arestore-keysfallback.