From c63c04ee3b6d5ba0689f8e8272e67e3520512a14 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Mar 2026 02:43:07 +0000 Subject: [PATCH 1/5] Bump actions/download-artifact from 4 to 8 Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 8. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v4...v8) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ec2a25c1b2..762e1177a4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -272,7 +272,7 @@ jobs: - name: Tune GitHub-hosted runner network uses: smorimoto/tune-github-hosted-runner-network@v1 - name: Download artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 - name: Publish to GitHub Packages if: ${{ github.event_name == 'push' || github.event_name == 'release' }} run: | From 254e4461eb686edc3452c27d2950de3d8e6afbcc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Mar 2026 02:43:12 +0000 Subject: [PATCH 2/5] Bump actions/upload-artifact from 5 to 7 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 7. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v5...v7) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 762e1177a4..d582619c7e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -117,7 +117,7 @@ jobs: run: dotnet pack --no-build --configuration Release --output ${{ github.workspace }}/artifacts/packages /p:VersionSuffix=${{ env.PACKAGE_VERSION_SUFFIX }} - name: Upload packages to artifacts if: ${{ matrix.os == 'ubuntu-latest' }} - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@v7 with: name: packages path: artifacts/packages @@ -142,7 +142,7 @@ jobs: Copy-Item -Recurse home/assets/* _site/styles/ - name: Upload documentation to artifacts if: ${{ matrix.os == 'ubuntu-latest' }} - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@v7 with: name: documentation path: docs/_site @@ -180,7 +180,7 @@ jobs: dotnet jb inspectcode --version dotnet jb inspectcode $env:SOLUTION_FILE --build --no-updates --dotnetcoresdk=$(dotnet --version) --output="$inspectCodeOutputPath" --format="xml" --settings=WarningSeverities.DotSettings --properties:"Configuration=Release;RunAnalyzers=false;NuGetAudit=false;ContinuousIntegrationBuild=false" --severity=WARNING --verbosity=WARN --disable-settings-layers="GlobalAll;GlobalPerProduct;SolutionPersonal;ProjectPersonal" - name: Upload output to artifacts - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@v7 with: name: InspectCode-${{ matrix.os }} path: ${{ env.INSPECT_CODE_OUTPUT_PATH }} From c243dd95a5b97be688fa5a845d4a8bdfc9b162b6 Mon Sep 17 00:00:00 2001 From: Bart Koelman <10324372+bkoelman@users.noreply.github.com> Date: Sat, 11 Apr 2026 15:50:06 +0200 Subject: [PATCH 3/5] Compensate for bug at https://github.com/actions/download-artifact/issues/426 --- .github/workflows/build.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d582619c7e..86004bf783 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -271,8 +271,16 @@ jobs: steps: - name: Tune GitHub-hosted runner network uses: smorimoto/tune-github-hosted-runner-network@v1 - - name: Download artifacts + - name: Download package artifacts uses: actions/download-artifact@v8 + with: + name: packages + path: packages + - name: Download documentation artifacts + uses: actions/download-artifact@v8 + with: + name: documentation + path: documentation - name: Publish to GitHub Packages if: ${{ github.event_name == 'push' || github.event_name == 'release' }} run: | From 6c04526042fe941f32717f0e2d557e34d4d775a8 Mon Sep 17 00:00:00 2001 From: Bart Koelman <10324372+bkoelman@users.noreply.github.com> Date: Sat, 11 Apr 2026 15:50:25 +0200 Subject: [PATCH 4/5] Test: push to feedz.io --- .github/workflows/build.yml | 136 +----------------------------------- 1 file changed, 3 insertions(+), 133 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 86004bf783..4481060e9d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -31,7 +31,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ ubuntu-latest, windows-latest, macos-latest ] + os: [ ubuntu-latest ] runs-on: ${{ matrix.os }} permissions: contents: read @@ -96,23 +96,6 @@ jobs: Write-Output "PACKAGE_VERSION_SUFFIX=$versionSuffix" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - name: Build run: dotnet build --no-restore --configuration Release /p:VersionSuffix=${{ env.PACKAGE_VERSION_SUFFIX }} - - name: Test - env: - # Override log levels, to reduce logging output when running tests in ci-build. - Logging__LogLevel__Microsoft.Hosting.Lifetime: 'None' - Logging__LogLevel__Microsoft.AspNetCore.Hosting.Diagnostics: 'None' - Logging__LogLevel__Microsoft.Extensions.Hosting.Internal.Host: 'None' - Logging__LogLevel__Microsoft.EntityFrameworkCore.Database.Command: 'None' - Logging__LogLevel__JsonApiDotNetCore: 'None' - run: dotnet test --no-build --configuration Release --collect:"XPlat Code Coverage" --logger "GitHubActions;annotations-title=@test (@framework);annotations-message=@error\n@trace;summary-include-passed=false" - - name: Upload coverage to codecov.io - if: ${{ matrix.os == 'ubuntu-latest' }} - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - uses: codecov/codecov-action@v6 - with: - fail_ci_if_error: true - verbose: true - name: Generate packages run: dotnet pack --no-build --configuration Release --output ${{ github.workspace }}/artifacts/packages /p:VersionSuffix=${{ env.PACKAGE_VERSION_SUFFIX }} - name: Upload packages to artifacts @@ -147,123 +130,10 @@ jobs: name: documentation path: docs/_site - inspect-code: - timeout-minutes: 60 - strategy: - fail-fast: false - matrix: - os: [ ubuntu-latest, windows-latest, macos-latest ] - runs-on: ${{ matrix.os }} - permissions: - contents: read - steps: - - name: Tune GitHub-hosted runner network - uses: smorimoto/tune-github-hosted-runner-network@v1 - - name: Setup .NET - uses: actions/setup-dotnet@v5 - with: - dotnet-version: | - 8.0.* - 9.0.* - 10.0.* - - name: Git checkout - uses: actions/checkout@v6 - with: - persist-credentials: false - - name: Restore tools - run: dotnet tool restore - - name: InspectCode - shell: pwsh - run: | - $inspectCodeOutputPath = Join-Path $env:RUNNER_TEMP 'jetbrains-inspectcode-results.xml' - Write-Output "INSPECT_CODE_OUTPUT_PATH=$inspectCodeOutputPath" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - dotnet jb inspectcode --version - dotnet jb inspectcode $env:SOLUTION_FILE --build --no-updates --dotnetcoresdk=$(dotnet --version) --output="$inspectCodeOutputPath" --format="xml" --settings=WarningSeverities.DotSettings --properties:"Configuration=Release;RunAnalyzers=false;NuGetAudit=false;ContinuousIntegrationBuild=false" --severity=WARNING --verbosity=WARN --disable-settings-layers="GlobalAll;GlobalPerProduct;SolutionPersonal;ProjectPersonal" - - name: Upload output to artifacts - uses: actions/upload-artifact@v7 - with: - name: InspectCode-${{ matrix.os }} - path: ${{ env.INSPECT_CODE_OUTPUT_PATH }} - - name: Verify outcome - shell: pwsh - run: | - [xml]$xml = Get-Content $env:INSPECT_CODE_OUTPUT_PATH - if ($xml.report.Issues -and $xml.report.Issues.Project) { - foreach ($project in $xml.report.Issues.Project) { - if ($project.Issue.Count -gt 0) { - $project.ForEach({ - Write-Output "`nProject $($project.Name)" - $failed = $true - - $_.Issue.ForEach({ - $issueType = $xml.report.IssueTypes.SelectSingleNode("IssueType[@Id='$($_.TypeId)']") - $severity = $_.Severity ?? $issueType.Severity - - Write-Output "[$severity] ($($_.TargetFramework)) $($_.File):$($_.Line) $($_.TypeId): $($_.Message)" - }) - }) - } - } - - if ($failed) { - Write-Error 'One or more projects failed code inspection.' - } - } - - cleanup-code: - timeout-minutes: 90 - strategy: - fail-fast: false - matrix: - os: [ ubuntu-latest, windows-latest, macos-latest ] - runs-on: ${{ matrix.os }} - permissions: - contents: read - steps: - - name: Tune GitHub-hosted runner network - uses: smorimoto/tune-github-hosted-runner-network@v1 - - name: Setup .NET - uses: actions/setup-dotnet@v5 - with: - dotnet-version: | - 8.0.* - 9.0.* - 10.0.* - - name: Git checkout - uses: actions/checkout@v6 - with: - persist-credentials: false - fetch-depth: 2 - - name: Restore tools - run: dotnet tool restore - - name: Restore packages - run: dotnet restore /p:NuGetAudit=false - - name: Build - run: dotnet build --no-restore --configuration Release /p:RunAnalyzers=false - - name: CleanupCode (on PR diff) - if: ${{ github.event_name == 'pull_request' }} - shell: pwsh - run: | - # Not using the environment variables for SHAs, because they may be outdated. This may happen on force-push after the build is queued, but before it starts. - # The below works because HEAD is detached (at the merge commit), so HEAD~1 is at the base branch. When a PR contains no commits, this job will not run. - $headCommitHash = git rev-parse HEAD - $baseCommitHash = git rev-parse HEAD~1 - - Write-Output "Running code cleanup on commit range $baseCommitHash..$headCommitHash in pull request." - dotnet jb cleanupcode --version - dotnet regitlint -s $env:SOLUTION_FILE --print-command --skip-tool-check --max-runs=5 --jb --dotnetcoresdk=$(dotnet --version) --jb-profile="JADNC Full Cleanup" --jb --no-updates --jb --properties:"Configuration=Release;RunAnalyzers=false;NuGetAudit=false" --jb --verbosity=WARN -f commits -a $headCommitHash -b $baseCommitHash --fail-on-diff --print-diff - - name: CleanupCode (on branch) - if: ${{ github.event_name == 'push' || github.event_name == 'release' || github.event_name == 'workflow_dispatch' }} - shell: pwsh - run: | - Write-Output 'Running code cleanup on all files.' - dotnet jb cleanupcode --version - dotnet regitlint -s $env:SOLUTION_FILE --print-command --skip-tool-check --jb --dotnetcoresdk=$(dotnet --version) --jb-profile="JADNC Full Cleanup" --jb --no-updates --jb --properties:"Configuration=Release;RunAnalyzers=false;NuGetAudit=false" --jb --verbosity=WARN --fail-on-diff --print-diff - publish: timeout-minutes: 60 runs-on: ubuntu-latest - needs: [ build-and-test, inspect-code, cleanup-code ] + needs: [ build-and-test ] if: ${{ !github.event.pull_request.head.repo.fork }} permissions: packages: write @@ -287,7 +157,7 @@ jobs: dotnet nuget add source --username 'json-api-dotnet' --password '${{ secrets.GITHUB_TOKEN }}' --store-password-in-clear-text --name 'github' 'https://nuget.pkg.github.com/json-api-dotnet/index.json' dotnet nuget push '${{ github.workspace }}/packages/*.nupkg' --api-key '${{ secrets.GITHUB_TOKEN }}' --source 'github' --skip-duplicate - name: Publish to feedz.io - if: ${{ github.event_name == 'push' || github.event_name == 'release' }} + #if: ${{ github.event_name == 'push' || github.event_name == 'release' }} run: | dotnet nuget add source --name 'feedz-io' 'https://f.feedz.io/json-api-dotnet/jsonapidotnetcore/nuget/index.json' dotnet nuget push '${{ github.workspace }}/packages/*.nupkg' --api-key '${{ secrets.FEEDZ_IO_API_KEY }}' --source 'feedz-io' --skip-duplicate From 5a4e2d5c02e2b0259ae64746a3cdac1613b5192d Mon Sep 17 00:00:00 2001 From: Bart Koelman <10324372+bkoelman@users.noreply.github.com> Date: Sat, 11 Apr 2026 17:06:55 +0200 Subject: [PATCH 5/5] Revert "Test: push to feedz.io" This reverts commit 6c04526042fe941f32717f0e2d557e34d4d775a8. --- .github/workflows/build.yml | 136 +++++++++++++++++++++++++++++++++++- 1 file changed, 133 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4481060e9d..86004bf783 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -31,7 +31,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ ubuntu-latest ] + os: [ ubuntu-latest, windows-latest, macos-latest ] runs-on: ${{ matrix.os }} permissions: contents: read @@ -96,6 +96,23 @@ jobs: Write-Output "PACKAGE_VERSION_SUFFIX=$versionSuffix" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - name: Build run: dotnet build --no-restore --configuration Release /p:VersionSuffix=${{ env.PACKAGE_VERSION_SUFFIX }} + - name: Test + env: + # Override log levels, to reduce logging output when running tests in ci-build. + Logging__LogLevel__Microsoft.Hosting.Lifetime: 'None' + Logging__LogLevel__Microsoft.AspNetCore.Hosting.Diagnostics: 'None' + Logging__LogLevel__Microsoft.Extensions.Hosting.Internal.Host: 'None' + Logging__LogLevel__Microsoft.EntityFrameworkCore.Database.Command: 'None' + Logging__LogLevel__JsonApiDotNetCore: 'None' + run: dotnet test --no-build --configuration Release --collect:"XPlat Code Coverage" --logger "GitHubActions;annotations-title=@test (@framework);annotations-message=@error\n@trace;summary-include-passed=false" + - name: Upload coverage to codecov.io + if: ${{ matrix.os == 'ubuntu-latest' }} + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + uses: codecov/codecov-action@v6 + with: + fail_ci_if_error: true + verbose: true - name: Generate packages run: dotnet pack --no-build --configuration Release --output ${{ github.workspace }}/artifacts/packages /p:VersionSuffix=${{ env.PACKAGE_VERSION_SUFFIX }} - name: Upload packages to artifacts @@ -130,10 +147,123 @@ jobs: name: documentation path: docs/_site + inspect-code: + timeout-minutes: 60 + strategy: + fail-fast: false + matrix: + os: [ ubuntu-latest, windows-latest, macos-latest ] + runs-on: ${{ matrix.os }} + permissions: + contents: read + steps: + - name: Tune GitHub-hosted runner network + uses: smorimoto/tune-github-hosted-runner-network@v1 + - name: Setup .NET + uses: actions/setup-dotnet@v5 + with: + dotnet-version: | + 8.0.* + 9.0.* + 10.0.* + - name: Git checkout + uses: actions/checkout@v6 + with: + persist-credentials: false + - name: Restore tools + run: dotnet tool restore + - name: InspectCode + shell: pwsh + run: | + $inspectCodeOutputPath = Join-Path $env:RUNNER_TEMP 'jetbrains-inspectcode-results.xml' + Write-Output "INSPECT_CODE_OUTPUT_PATH=$inspectCodeOutputPath" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + dotnet jb inspectcode --version + dotnet jb inspectcode $env:SOLUTION_FILE --build --no-updates --dotnetcoresdk=$(dotnet --version) --output="$inspectCodeOutputPath" --format="xml" --settings=WarningSeverities.DotSettings --properties:"Configuration=Release;RunAnalyzers=false;NuGetAudit=false;ContinuousIntegrationBuild=false" --severity=WARNING --verbosity=WARN --disable-settings-layers="GlobalAll;GlobalPerProduct;SolutionPersonal;ProjectPersonal" + - name: Upload output to artifacts + uses: actions/upload-artifact@v7 + with: + name: InspectCode-${{ matrix.os }} + path: ${{ env.INSPECT_CODE_OUTPUT_PATH }} + - name: Verify outcome + shell: pwsh + run: | + [xml]$xml = Get-Content $env:INSPECT_CODE_OUTPUT_PATH + if ($xml.report.Issues -and $xml.report.Issues.Project) { + foreach ($project in $xml.report.Issues.Project) { + if ($project.Issue.Count -gt 0) { + $project.ForEach({ + Write-Output "`nProject $($project.Name)" + $failed = $true + + $_.Issue.ForEach({ + $issueType = $xml.report.IssueTypes.SelectSingleNode("IssueType[@Id='$($_.TypeId)']") + $severity = $_.Severity ?? $issueType.Severity + + Write-Output "[$severity] ($($_.TargetFramework)) $($_.File):$($_.Line) $($_.TypeId): $($_.Message)" + }) + }) + } + } + + if ($failed) { + Write-Error 'One or more projects failed code inspection.' + } + } + + cleanup-code: + timeout-minutes: 90 + strategy: + fail-fast: false + matrix: + os: [ ubuntu-latest, windows-latest, macos-latest ] + runs-on: ${{ matrix.os }} + permissions: + contents: read + steps: + - name: Tune GitHub-hosted runner network + uses: smorimoto/tune-github-hosted-runner-network@v1 + - name: Setup .NET + uses: actions/setup-dotnet@v5 + with: + dotnet-version: | + 8.0.* + 9.0.* + 10.0.* + - name: Git checkout + uses: actions/checkout@v6 + with: + persist-credentials: false + fetch-depth: 2 + - name: Restore tools + run: dotnet tool restore + - name: Restore packages + run: dotnet restore /p:NuGetAudit=false + - name: Build + run: dotnet build --no-restore --configuration Release /p:RunAnalyzers=false + - name: CleanupCode (on PR diff) + if: ${{ github.event_name == 'pull_request' }} + shell: pwsh + run: | + # Not using the environment variables for SHAs, because they may be outdated. This may happen on force-push after the build is queued, but before it starts. + # The below works because HEAD is detached (at the merge commit), so HEAD~1 is at the base branch. When a PR contains no commits, this job will not run. + $headCommitHash = git rev-parse HEAD + $baseCommitHash = git rev-parse HEAD~1 + + Write-Output "Running code cleanup on commit range $baseCommitHash..$headCommitHash in pull request." + dotnet jb cleanupcode --version + dotnet regitlint -s $env:SOLUTION_FILE --print-command --skip-tool-check --max-runs=5 --jb --dotnetcoresdk=$(dotnet --version) --jb-profile="JADNC Full Cleanup" --jb --no-updates --jb --properties:"Configuration=Release;RunAnalyzers=false;NuGetAudit=false" --jb --verbosity=WARN -f commits -a $headCommitHash -b $baseCommitHash --fail-on-diff --print-diff + - name: CleanupCode (on branch) + if: ${{ github.event_name == 'push' || github.event_name == 'release' || github.event_name == 'workflow_dispatch' }} + shell: pwsh + run: | + Write-Output 'Running code cleanup on all files.' + dotnet jb cleanupcode --version + dotnet regitlint -s $env:SOLUTION_FILE --print-command --skip-tool-check --jb --dotnetcoresdk=$(dotnet --version) --jb-profile="JADNC Full Cleanup" --jb --no-updates --jb --properties:"Configuration=Release;RunAnalyzers=false;NuGetAudit=false" --jb --verbosity=WARN --fail-on-diff --print-diff + publish: timeout-minutes: 60 runs-on: ubuntu-latest - needs: [ build-and-test ] + needs: [ build-and-test, inspect-code, cleanup-code ] if: ${{ !github.event.pull_request.head.repo.fork }} permissions: packages: write @@ -157,7 +287,7 @@ jobs: dotnet nuget add source --username 'json-api-dotnet' --password '${{ secrets.GITHUB_TOKEN }}' --store-password-in-clear-text --name 'github' 'https://nuget.pkg.github.com/json-api-dotnet/index.json' dotnet nuget push '${{ github.workspace }}/packages/*.nupkg' --api-key '${{ secrets.GITHUB_TOKEN }}' --source 'github' --skip-duplicate - name: Publish to feedz.io - #if: ${{ github.event_name == 'push' || github.event_name == 'release' }} + if: ${{ github.event_name == 'push' || github.event_name == 'release' }} run: | dotnet nuget add source --name 'feedz-io' 'https://f.feedz.io/json-api-dotnet/jsonapidotnetcore/nuget/index.json' dotnet nuget push '${{ github.workspace }}/packages/*.nupkg' --api-key '${{ secrets.FEEDZ_IO_API_KEY }}' --source 'feedz-io' --skip-duplicate