From 9bb86da6e1498b787139aafeea26407184da5782 Mon Sep 17 00:00:00 2001 From: Chris Pulman Date: Sat, 11 Jul 2026 14:42:07 +0100 Subject: [PATCH 1/2] fix(build): skip symbols packages during NuGet publish Release workflow: - Filter signed publish inputs so legacy *.symbols.nupkg artifacts are not pushed to NuGet as primary packages. - Add --skip-duplicate so reruns after partial publishes continue with remaining packages. Validation: - Simulated the publish package selection with primary and symbols packages. - Ran git diff --check. --- .github/workflows/BuildDeploy.yml | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/.github/workflows/BuildDeploy.yml b/.github/workflows/BuildDeploy.yml index f9c01db..b323538 100644 --- a/.github/workflows/BuildDeploy.yml +++ b/.github/workflows/BuildDeploy.yml @@ -411,8 +411,29 @@ jobs: - name: Push to NuGet shell: bash run: | - for pkg in ./signed/*.nupkg; do - dotnet nuget push "$pkg" --source https://api.nuget.org/v3/index.json --api-key "${{ steps.nuget-login.outputs.NUGET_API_KEY }}" + set -euo pipefail + shopt -s nullglob + + packages=(./signed/*.nupkg) + push_packages=() + for pkg in "${packages[@]}"; do + case "$pkg" in + *.symbols.nupkg) + echo "Skipping legacy symbols package: $pkg" + ;; + *) + push_packages+=("$pkg") + ;; + esac + done + + [ "${#push_packages[@]}" -gt 0 ] || { echo "::error::no publishable packages matched: ./signed/*.nupkg"; exit 1; } + + for pkg in "${push_packages[@]}"; do + dotnet nuget push "$pkg" \ + --source https://api.nuget.org/v3/index.json \ + --api-key "${{ steps.nuget-login.outputs.NUGET_API_KEY }}" \ + --skip-duplicate done create-release: From 3c5ca70cf32f5dcce0e4eb5830ee7daa4ccc7551 Mon Sep 17 00:00:00 2001 From: Chris Pulman Date: Sat, 11 Jul 2026 14:54:14 +0100 Subject: [PATCH 2/2] fix(build): stop producing legacy symbol packages Release packaging: - Remove the shared IncludeSymbols property that caused legacy *.symbols.nupkg packages to be emitted by dotnet pack. - Exclude legacy symbols packages from unsigned and signed release artifacts before the signing and publishing jobs. - Simplify the NuGet publish loop now that signed artifacts contain only primary .nupkg files. Validation: - Packed Extensions.Hosting.Avalonia for net8.0 and confirmed only the primary .nupkg was produced. - Checked effective MSBuild properties for IncludeSymbols, SymbolPackageFormat, DebugType, and EmbedUntrackedSources. - Ran git diff --check. --- .github/workflows/BuildDeploy.yml | 24 ++++++++---------------- src/Directory.Build.props | 1 - 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/.github/workflows/BuildDeploy.yml b/.github/workflows/BuildDeploy.yml index b323538..79b8c87 100644 --- a/.github/workflows/BuildDeploy.yml +++ b/.github/workflows/BuildDeploy.yml @@ -225,7 +225,9 @@ jobs: uses: actions/upload-artifact@v7 with: name: unsigned-nuget - path: packages/*.nupkg + path: | + packages/*.nupkg + !packages/*.symbols.nupkg if-no-files-found: error sign: @@ -382,7 +384,9 @@ jobs: uses: actions/upload-artifact@v7 with: name: signed-nuget - path: signed/*.nupkg + path: | + signed/*.nupkg + !signed/*.symbols.nupkg if-no-files-found: error publish-nuget: @@ -415,21 +419,9 @@ jobs: shopt -s nullglob packages=(./signed/*.nupkg) - push_packages=() - for pkg in "${packages[@]}"; do - case "$pkg" in - *.symbols.nupkg) - echo "Skipping legacy symbols package: $pkg" - ;; - *) - push_packages+=("$pkg") - ;; - esac - done + [ "${#packages[@]}" -gt 0 ] || { echo "::error::no publishable packages matched: ./signed/*.nupkg"; exit 1; } - [ "${#push_packages[@]}" -gt 0 ] || { echo "::error::no publishable packages matched: ./signed/*.nupkg"; exit 1; } - - for pkg in "${push_packages[@]}"; do + for pkg in "${packages[@]}"; do dotnet nuget push "$pkg" \ --source https://api.nuget.org/v3/index.json \ --api-key "${{ steps.nuget-login.outputs.NUGET_API_KEY }}" \ diff --git a/src/Directory.Build.props b/src/Directory.Build.props index d33a270..d84bf29 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -25,7 +25,6 @@ true true embedded - true $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb