From 77f54db72749e9935a2b5e527149fefe8d37da41 Mon Sep 17 00:00:00 2001 From: Malcolm Nixon Date: Fri, 2 Oct 2026 17:02:50 -0400 Subject: [PATCH] Pack NuGet output to a flat packages folder dotnet pack previously wrote each project's .nupkg/.snupkg to its own src//bin/Release/, so the packages-* artifact preserved that nested layout. actions/upload-artifact roots its archive at the common ancestor of matched paths, so the downloaded artifact was not a usable flat local NuGet feed, and release.yaml's existing artifacts/*.nupkg push step would have found nothing. Pack with --output packages so all projects write directly into one flat folder, matching the pattern used by DocDown's build pipeline. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .github/workflows/build.yaml | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 1d4805fe..fe634e11 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -202,12 +202,19 @@ jobs: end /d:sonar.token="${{ secrets.SONAR_TOKEN }}" + # Packages are written to a single flat folder rather than each project's + # bin/Release. actions/upload-artifact roots its archive at the common ancestor of + # the paths it matches, so per-project output would preserve + # 'src//bin/Release/' inside the artifact and the downloaded folder would + # not be a usable local NuGet feed: 'dotnet tool install --add-source packages' + # finds no package at that path, which is how the integration tests first failed. - name: Create Library Package run: > dotnet pack --no-build --no-restore --configuration Release + --output packages --property:PackageVersion=${{ inputs.version }} # === UPLOAD ARTIFACTS === @@ -220,17 +227,13 @@ jobs: name: artifacts-build-${{ matrix.os }} path: artifacts/ + # Packages are staged flat by the pack step above, so the artifact is a usable + # local NuGet feed the integration tests can install from directly. - name: Upload packages uses: actions/upload-artifact@v7 with: name: packages-${{ matrix.os }} - path: | - src/DemaConsulting.CanvasNet/bin/Release/*.nupkg - src/DemaConsulting.CanvasNet/bin/Release/*.snupkg - src/DemaConsulting.CanvasNet.Svg/bin/Release/*.nupkg - src/DemaConsulting.CanvasNet.Svg/bin/Release/*.snupkg - src/DemaConsulting.CanvasNet.Pdf/bin/Release/*.nupkg - src/DemaConsulting.CanvasNet.Pdf/bin/Release/*.snupkg + path: packages/ # Runs CodeQL security and quality analysis, gathering results to include # in the code quality report.