Merge pull request #176 from nanotaboada/feature/dotnet-ci #389
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/[email protected] | |
| 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/[email protected] | |
| with: | |
| project-token: ${{ secrets.CODACY_PROJECT_TOKEN }} | |
| coverage-reports: cobertura.xml |