onebeyond/onebeyond-studio-core

View on GitHub
.github/workflows/check-pr.yaml

Summary

Maintainability
Test Coverage
name: "Check PR"

on:
  pull_request:
    branches:
      - "main"
    paths:
      - "src/**"
  workflow_dispatch:

concurrency:
  group: "${{github.workflow}}-${{github.head_ref}}"
  cancel-in-progress: true

jobs:
  sonarcloud:
    name: "Sonar Cloud"  
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
      with:
        # Disabling shallow clone is recommended for improving relevancy of reporting
        fetch-depth: 0
    - name: SonarScanner for .NET 7 with pull request decoration support
      uses: highbyte/sonarscan-dotnet@v2.3.0
      with:
        sonarProjectKey: onebeyond-studio-core
        sonarProjectName: onebeyond-studio-core        
        sonarOrganization: dcslsoftwareltd
        dotnetTestArguments: --logger trx --collect:"XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=opencover
        sonarBeginArguments: /d:sonar.cs.opencover.reportsPaths="**/TestResults/**/coverage.opencover.xml" -d:sonar.cs.vstest.reportsPaths="**/TestResults/*.trx"
      env:
         SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
         GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  tests:
    name: "Run Tests"
    runs-on: "ubuntu-latest"
    steps:
      - name: "Checkout"
        uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: "Setup .NET CLI"
        uses: actions/setup-dotnet@v3
        with:
          dotnet-version: "8.x"

      - name: "Restore Solution NuGets"
        run: dotnet restore

      - name: "Build Solution"
        run: dotnet build
          --no-restore
          --configuration "Release"

      - name: "Run Solution Tests"
        run: dotnet test
          --no-restore --no-build
          --configuration "Release"
          --settings "src/CodeCoverage.runsettings"
          --collect "XPlat Code Coverage"
          --logger "trx;logfileprefix=tr"

      - name: "Publish Solution Test Results"
        uses: actions/upload-artifact@v3
        if: success() || failure()
        with:
          name: "test-results"
          path: "src/**/TestResults/*.trx"