diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 96b7185..8c21991 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -8,6 +8,20 @@ "reportgenerator" ], "rollForward": false + }, + "dotnet-coverage": { + "version": "18.1.0", + "commands": [ + "dotnet-coverage" + ], + "rollForward": false + }, + "dotnet-sonarscanner": { + "version": "11.0.0", + "commands": [ + "dotnet-sonarscanner" + ], + "rollForward": false } } } \ No newline at end of file diff --git a/.github/workflows/sonar.yml b/.github/workflows/sonar.yml index 7d510f3..e077b4f 100644 --- a/.github/workflows/sonar.yml +++ b/.github/workflows/sonar.yml @@ -7,6 +7,8 @@ on: - "src/**" - "tests/**" - "**/*.props" + - "**/packages.lock.json" + - ".config/dotnet-tools.json" - "global.json" - ".github/workflows/sonar.yml" pull_request: @@ -15,6 +17,9 @@ on: paths: - "src/**" - "tests/**" + - "**/*.props" + - "**/packages.lock.json" + - ".config/dotnet-tools.json" - "global.json" - ".github/workflows/sonar.yml" workflow_dispatch: @@ -23,7 +28,7 @@ concurrency: cancel-in-progress: true jobs: sonarcloud: - runs-on: windows-latest + runs-on: ubuntu-latest permissions: contents: read steps: @@ -34,48 +39,32 @@ jobs: uses: actions/setup-dotnet@v5 with: global-json-file: ./global.json + cache: true + cache-dependency-path: "**/packages.lock.json" - name: Set up JDK uses: actions/setup-java@v5 with: java-version: 17 distribution: "zulu" - - 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' - shell: powershell - run: | - New-Item -Path .\.sonar\scanner -ItemType Directory - dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner - - name: Install dotnet-coverage tool - run: | - dotnet tool install --global dotnet-coverage + - name: Install tools + run: dotnet tool restore - name: Build and analyze with coverage env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - shell: powershell + USE_MOCK_SERVER: ${{ vars.USE_MOCK_SERVER }} run: | - # Start SonarCloud analysis - .\.sonar\scanner\dotnet-sonarscanner begin ` - /k:"Tsingis_bitcoin-web-api" ` - /o:"tsingis" ` - /d:sonar.token="${{ secrets.SONAR_TOKEN }}" ` - /d:sonar.host.url="https://sonarcloud.io" ` - /d:sonar.cs.vscoveragexml.reportsPaths="coverage.xml" ` - /d:sonar.scanner.scanAll=false ` - /d:sonar.exclusions="global.json" - dotnet build --no-incremental - dotnet-coverage collect "dotnet test" -f xml -o "coverage.xml" - .\.sonar\scanner\dotnet-sonarscanner end ` - /d:sonar.token="${{ secrets.SONAR_TOKEN }}" + dotnet tool run dotnet-sonarscanner begin \ + /k:"Tsingis_bitcoin-web-api" \ + /o:"tsingis" \ + /d:sonar.token="${{ env.SONAR_TOKEN }}" \ + /d:sonar.host.url="https://sonarcloud.io" \ + /d:sonar.cs.vscoveragexml.reportsPaths="coverage.xml" \ + /d:sonar.scanner.scanAll=false + + dotnet restore --locked-mode + dotnet build --no-restore + dotnet tool run dotnet-coverage collect \ + "dotnet test --no-restore --no-build" -f xml -o "coverage.xml" + + dotnet tool run dotnet-sonarscanner end \ + /d:sonar.token="${{ env.SONAR_TOKEN }}"