deps: Bump the all-nuget group with 1 update #421
Workflow file for this run
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
| name: CI | |
| on: | |
| push: | |
| branches: [ main ] | |
| pull_request: | |
| branches: [ main ] | |
| env: | |
| DOTNET_NOLOGO: true | |
| INCLUDE_SYMBOLS: true | |
| jobs: | |
| pr-checks: | |
| if: github.event_name == 'pull_request' | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| permissions: | |
| contents: read | |
| pull-requests: write | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v5 | |
| with: | |
| dotnet-version: | | |
| 9.0.x | |
| 10.0.x | |
| cache: true | |
| cache-dependency-path: | | |
| **/packages.lock.json | |
| global.json | |
| - name: Restore | |
| run: | | |
| dotnet restore --use-lock-file | |
| dotnet tool restore | |
| - name: Build (Release) | |
| run: dotnet build PatternKit.slnx --configuration Release --no-restore /p:ContinuousIntegrationBuild=true | |
| - name: Install DocFX | |
| run: dotnet tool update -g docfx | |
| - name: Build Documentation | |
| run: | | |
| docfx metadata docs/docfx.json | |
| docfx build docs/docfx.json | |
| - name: Test with coverage | |
| timeout-minutes: 20 | |
| run: | | |
| dotnet test PatternKit.slnx \ | |
| --configuration Release \ | |
| --collect:"XPlat Code Coverage" \ | |
| -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=cobertura \ | |
| -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Include="[PatternKit*]*" \ | |
| -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Exclude="[*Tests]*" | |
| - name: Install ReportGenerator | |
| run: dotnet tool update -g dotnet-reportgenerator-globaltool | |
| - name: Combine coverage and create reports | |
| shell: bash | |
| run: | | |
| REPORTS=$(find . -type f -path "*/TestResults/*/coverage.cobertura.xml" | tr '\n' ';') | |
| reportgenerator \ | |
| -reports:"$REPORTS" \ | |
| -targetdir:"coverage-report" \ | |
| -reporttypes:"HtmlInline;Cobertura;TextSummary;lcov;Badges" \ | |
| -assemblyfilters:"+PatternKit*;-*Tests*" \ | |
| -filefilters:"-**/*.Tests/*;-**/*Tests*/**" | |
| echo "COVERAGE_SUMMARY<<EOF" >> $GITHUB_ENV | |
| cat coverage-report/Summary.txt >> $GITHUB_ENV | |
| echo "EOF" >> $GITHUB_ENV | |
| - name: Upload coverage HTML report | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: coverage-report | |
| path: coverage-report | |
| - name: Add coverage summary to PR | |
| uses: marocchino/sticky-pull-request-comment@v3 | |
| with: | |
| recreate: true | |
| message: | | |
| ## Code Coverage | |
| ``` | |
| ${{ env.COVERAGE_SUMMARY }} | |
| ``` | |
| - name: Upload coverage to Codecov | |
| uses: codecov/codecov-action@v6 | |
| with: | |
| files: | | |
| **/TestResults/*/coverage.cobertura.xml | |
| flags: unittests | |
| fail_ci_if_error: true | |
| verbose: true | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| release: | |
| if: github.event_name == 'push' && github.ref == 'refs/heads/main' | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| permissions: | |
| contents: write | |
| packages: write | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v5 | |
| with: | |
| dotnet-version: | | |
| 9.0.x | |
| 10.0.x | |
| cache: true | |
| cache-dependency-path: | | |
| **/packages.lock.json | |
| global.json | |
| - name: Restore | |
| run: | | |
| dotnet restore --use-lock-file | |
| dotnet tool restore | |
| - name: Fetch tags | |
| run: git fetch --prune --tags | |
| - name: Install GitVersion | |
| uses: gittools/actions/gitversion/setup@v4 | |
| with: | |
| versionSpec: '6.x' | |
| - name: Run GitVersion | |
| id: gitversion | |
| uses: gittools/actions/gitversion/execute@v4 | |
| - name: Set version env vars | |
| run: | | |
| echo "PACKAGE_VERSION=${{ steps.gitversion.outputs.majorMinorPatch }}" >> $GITHUB_ENV | |
| echo "ASSEMBLY_VERSION=${{ steps.gitversion.outputs.assemblySemVer }}" >> $GITHUB_ENV | |
| echo "FILE_VERSION=${{ steps.gitversion.outputs.assemblySemFileVer }}" >> $GITHUB_ENV | |
| - name: Build (Release) | |
| run: > | |
| dotnet build PatternKit.slnx | |
| --configuration Release | |
| --no-restore | |
| /p:ContinuousIntegrationBuild=true | |
| /p:Version=${{ env.PACKAGE_VERSION }} | |
| /p:AssemblyVersion=${{ env.ASSEMBLY_VERSION }} | |
| /p:FileVersion=${{ env.FILE_VERSION }} | |
| /p:PackageVersion=${{ env.PACKAGE_VERSION }} | |
| - name: Test with coverage (Release) | |
| timeout-minutes: 20 | |
| run: | | |
| dotnet test PatternKit.slnx \ | |
| --configuration Release \ | |
| --collect:"XPlat Code Coverage" \ | |
| -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=cobertura \ | |
| -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Include="[PatternKit*]*" \ | |
| -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Exclude="[*Tests]*" \ | |
| -- RunConfiguration.TestSessionTimeout=300000 | |
| - name: Pack (all packable projects) | |
| run: > | |
| dotnet pack PatternKit.slnx | |
| --configuration Release | |
| --no-build | |
| --output ./artifacts | |
| /p:ContinuousIntegrationBuild=true | |
| /p:IncludeSymbols=${{ env.INCLUDE_SYMBOLS }} | |
| /p:SymbolPackageFormat=snupkg | |
| /p:Version=${{ env.PACKAGE_VERSION }} | |
| /p:AssemblyVersion=${{ env.ASSEMBLY_VERSION }} | |
| /p:FileVersion=${{ env.FILE_VERSION }} | |
| /p:PackageVersion=${{ env.PACKAGE_VERSION }} | |
| - name: Upload packages as artifact | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: nuget-packages | |
| path: | | |
| ./artifacts/*.nupkg | |
| ./artifacts/*.snupkg | |
| - name: Upload coverage to Codecov (Release) | |
| uses: codecov/codecov-action@v6 | |
| with: | |
| files: | | |
| **/TestResults/*/coverage.cobertura.xml | |
| flags: unittests | |
| fail_ci_if_error: false | |
| verbose: true | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| - name: Create and push git tag | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| git config user.name "github-actions" | |
| git config user.email "github-actions@github.com" | |
| TAG="v${PACKAGE_VERSION}" | |
| if git ls-remote --exit-code --tags origin "refs/tags/${TAG}" >/dev/null 2>&1; then | |
| echo "Tag ${TAG} already exists on origin. Skipping tag push." | |
| else | |
| git tag "${TAG}" | |
| git push origin "${TAG}" | |
| fi | |
| - name: Create GitHub Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: v${{ env.PACKAGE_VERSION }} | |
| name: Release v${{ env.PACKAGE_VERSION }} | |
| files: | | |
| ./artifacts/*.nupkg | |
| ./artifacts/*.snupkg | |
| generate_release_notes: true | |
| - name: Push to NuGet.org | |
| env: | |
| NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }} | |
| run: | | |
| if [ -n "$NUGET_API_KEY" ]; then | |
| dotnet nuget push ./artifacts/*.nupkg \ | |
| --api-key "$NUGET_API_KEY" \ | |
| --source https://api.nuget.org/v3/index.json \ | |
| --skip-duplicate | |
| else | |
| echo "Skipping NuGet.org push: API key not set." | |
| fi | |
| - name: Push to GitHub Packages (optional) | |
| run: | | |
| dotnet nuget push "./artifacts/*.nupkg" \ | |
| --source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" \ | |
| --api-key "${{ secrets.GITHUB_TOKEN }}" \ | |
| --skip-duplicate | |
| dotnet nuget push "./artifacts/*.snupkg" \ | |
| --source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" \ | |
| --api-key "${{ secrets.GITHUB_TOKEN }}" \ | |
| --skip-duplicate |