diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 3440b94..113e8e0 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -1,33 +1,87 @@ -name: .NET - +name: Validation Code | SonarCloud on: - push: - branches: [ main ] pull_request: - branches: [ main ] - -defaults: - run: - working-directory: src + types: [opened, synchronize, reopened] + workflow_dispatch: + +env: + imageName: avanade.estudo.dotnetmongo + dotnetVersion: 8.x + csprojFolder: ./src/Avanade.SubTCSE.Projeto.Api/Avanade.SubTCSE.Projeto.Api.csproj jobs: - build: - + build-and-sonar: runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - - name: Setup .NET - uses: actions/setup-dotnet@v1 - with: - dotnet-version: 8.0.x - - - name: Restore dependencies - run: dotnet restore - - - name: Build - run: dotnet build --no-restore - - #- name: Test - # run: dotnet test --no-build --verbosity normal + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: 17 + distribution: 'zulu' + + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: ${{ env.dotnetVersion }} + + - name: Cache SonarCloud packages + uses: actions/cache@v4 + with: + path: ~/sonar/cache + key: ${{ runner.os }}-sonar + restore-keys: ${{ runner.os }}-sonar + + - name: Cache SonarCloud scanner + id: cache-sonar-scanner + uses: actions/cache@v4 + with: + path: ./.sonar/scanner + key: ${{ runner.os }}-sonar-scanner + restore-keys: ${{ runner.os }}-sonar-scanner + + - name: Install SonarCloud scanner + if: ${{ steps.cache-sonar-scanner.outputs.cache-hit != 'true' }} + run: | + mkdir -p .sonar/scanner + dotnet tool update dotnet-sonarscanner --tool-path .sonar/scanner + + - name: Install SonarCloud scanner + run: | + dotnet tool install --global dotnet-sonarscanner + dotnet tool install --global dotnet-coverage + dotnet tool install --global dotnet-reportgenerator-globaltool + + - name: Build and analyze + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + run: | + dotnet-sonarscanner begin /k:"felipementel_Avanade-SubTCSE-Projeto" /o:"felipementel" /d:sonar.token="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" /d:sonar.cs.vscoveragexml.reportsPaths=coverage.xml /d:sonar.exclusions="**/Migrations/**" + dotnet restore ${{ env.csprojFolder }} + dotnet build ${{ env.csprojFolder }} --no-incremental + dotnet-coverage collect 'dotnet test ./src/' -f xml -o 'coverage.xml' + dotnet-sonarscanner end /d:sonar.token="${{ secrets.SONAR_TOKEN }}" + + - name: ReportGenerator + uses: danielpalme/ReportGenerator-GitHub-Action@5.2.1 + with: + reports: 'coverage.xml' + targetdir: 'coveragereport' + reporttypes: 'HtmlInline;Cobertura' + assemblyfilters: '+*' + classfilters: '-*.Migrations.*' + filefilters: '+*' + verbosity: 'Verbose' + title: 'Canal DEPLOY API Cachorro' + tag: '${{ github.run_number }}_${{ github.run_id }}' + toolpath: 'reportgeneratortool' + + - name: Upload coverage report artifact + uses: actions/upload-artifact@v4 + with: + name: CoverageReport + path: coveragereport