Repository navigation
fix(ci): gate nuget.org publish on all-platform success - #250
Merged
Merged
Conversation
Previously each platform's PushPackages job pushed to nuget.org as soon as its own tests passed, independently of other platforms. When Windows failed in run 36090066720, Linux packages (MaxRev.Gdal.Core, LinuxRuntime.Minimal.x64/.arm64, CLI.linux-*) reached nuget.org at 3.13.3.573 with no matching Windows or macOS packages - an orphan partial release. Remove the per-platform nuget.org push from unix.yml, macos.yml, and windows.yml PushPackages jobs. The per-platform bundle build and artifact upload steps are preserved. main.yml TestAndPushPackages (which already gates on all three platform workflows) now downloads the per-platform bundle artifacts (packages-unix-final, packages-osx-final) and publishes the complete package set to nuget.org in one shot, after all platforms succeed and the final integration test passes. The existing --skip-duplicate flag keeps re-runs safe.
Finds every MaxRev.Gdal.* package that has the given version and unlists it with dotnet nuget delete. Dry run by default; --yes to apply. Used to clean up the orphaned 3.13.3.573 packages.
packages-osx-final (and the raw osx/win artifacts) contain a macOS-built copy of MaxRev.Gdal.Core under the same filename. With merge-multiple the last download wins, so the Core published to nuget.org could silently become the macOS build instead of the canonical Linux x64 one from packages-core. Re-download packages-core as the final artifact step to guarantee it overwrites any duplicate.
This was referenced Oct 16, 2026
This was referenced Oct 28, 2026
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.
What changed
Removes the per-platform
Push packagesstep fromunix.yml,macos.yml, andwindows.ymlPushPackages jobs. These steps pushed each platform's NuGet packages to nuget.org independently, gated only on that platform's own tests.main.ymlTestAndPushPackages(which alreadyneedsall three platform workflows) now downloads the per-platform bundle artifacts (packages-unix-final,packages-osx-final) alongside the raw per-architecture packages, and publishes the complete package set in a single push after all platforms pass and the final integration test succeeds.The canonical Linux-built
packages-coreis re-downloaded last to overwrite the duplicate Core nupkg that osx and win publish-makefiles also pack into their bundle artifacts.Per-platform bundle builds and artifact uploads are preserved - only the independent nuget.org push is removed.
Behavioural notes
[skip unix]) now publishes nothing to nuget.org, sinceTestAndPushPackagesrequires all three platform workflows to succeed. Previously, the remaining platforms still pushed their packages independently.PushPackages-Windowsis left as a no-op job for now; removing it is deferred to a follow-up.Why
Run 36090066720 on 2025-09-25: Windows build failed, but Linux tests passed, so
PushPackages-LinuxpublishedMaxRev.Gdal.Core,LinuxRuntime.Minimal.x64/.arm64, andCLI.linux-*at version 3.13.3.573 to nuget.org. No matching Windows or macOS packages were ever published - an orphan partial release.Verification
python yaml.safe_loadvalidationgit diff --stat origin/mainconfirms only the 4 intended workflow files changedpush-packages-makefileuses--skip-duplicate, so re-runs remain safeBUILD_NUMBER_TAIL=github.run_number) are unchangedpackages-corere-download as the last artifact step ensures the canonical Linux-built Core is the one published