chore(ci): improve .NET CI workflow #388
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
| # Building and testing .NET | |
| # https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net | |
| name: .NET CI | |
| on: | |
| push: | |
| branches: [ "master" ] | |
| pull_request: | |
| branches: [ "master" ] | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Set up .NET 8 | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: 8.0.x | |
| - name: Cache NuGet packages | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.nuget/packages | |
| key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }} | |
| restore-keys: | | |
| ${{ runner.os }}-nuget- | |
| - name: Restore dependencies | |
| run: dotnet restore | |
| - name: Build projects | |
| run: dotnet build --no-restore | |
| test: | |
| needs: build | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Run tests and collect code coverage (Cobertura) | |
| run: dotnet test --results-directory "coverage" --collect:"Code Coverage;Format=cobertura" | |
| - name: Install dotnet-coverage tool | |
| run: dotnet tool install --global dotnet-coverage | |
| - name: Merge coverage reports | |
| run: dotnet-coverage merge coverage/**/*.cobertura.xml --output coverage/cobertura.xml --output-format cobertura | |
| - name: Install ReportGenerator tool | |
| run: dotnet tool install --global dotnet-reportgenerator-globaltool | |
| - name: Generate Markdown summary | |
| run: reportgenerator -reports:coverage/cobertura.xml -targetdir:coverage -reporttypes:"MarkdownSummaryGithub" | |
| - name: Display Markdown summary | |
| run: cat coverage/SummaryGithub.md >> $GITHUB_STEP_SUMMARY | |
| - name: Upload coverage report artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: cobertura.xml | |
| path: coverage/cobertura.xml | |
| coverage: | |
| needs: test | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| service: [codecov, codacy] # Parallel jobs for Codecov and Codacy | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Download coverage report artifact | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: cobertura.xml | |
| - name: Upload coverage report to ${{ matrix.service }} | |
| if: ${{ matrix.service == 'codecov' }} | |
| uses: codecov/codecov-action@v5.4.0 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| files: cobertura.xml | |
| use_oidc: false | |
| verbose: true | |
| - name: Upload coverage report to ${{ matrix.service }} | |
| if: ${{ matrix.service == 'codacy' }} | |
| uses: codacy/codacy-coverage-reporter-action@v1.3.0 | |
| with: | |
| project-token: ${{ secrets.CODACY_PROJECT_TOKEN }} | |
| coverage-reports: cobertura.xml |