New: Hookup SonarCloud

This commit is contained in:
Qstick 2019-12-07 02:37:11 -05:00
parent 12245d0956
commit 2633c82a01
11 changed files with 116 additions and 81 deletions

View File

@ -624,9 +624,9 @@ stages:
displayName: Move Package Contents
- bash: |
if [[ $OSNAME == "Mac" ]]; then
url=https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-macos.tar.gz
url=https://github.com/mozilla/geckodriver/releases/download/v0.26.0/geckodriver-v0.26.0-macos.tar.gz
elif [[ $OSNAME == "Linux" ]]; then
url=https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-linux64.tar.gz
url=https://github.com/mozilla/geckodriver/releases/download/v0.26.0/geckodriver-v0.26.0-linux64.tar.gz
else
echo "Unhandled OS"
exit 1
@ -682,66 +682,69 @@ stages:
env:
FORCE_COLOR: 0
# - job: Analyze_Frontend
# displayName: Frontend
# condition: eq(variables['system.pullrequest.isfork'], false)
# pool:
# vmImage: windows-2019
# steps:
# - checkout: self # Need history for Sonar analysis
# - task: SonarCloudPrepare@1
# env:
# SONAR_SCANNER_OPTS: ''
# inputs:
# SonarCloud: 'SonarCloud'
# organization: 'radarr'
# scannerMode: 'CLI'
# configMode: 'manual'
# cliProjectKey: 'radarr_Radarr.UI'
# cliProjectName: 'RadarrUI'
# cliProjectVersion: '$(radarrVersion)'
# cliSources: './frontend'
# - task: SonarCloudAnalyze@1
- job: Analyze_Frontend
displayName: Frontend
pool:
vmImage: windows-2019
steps:
- checkout: self # Need history for Sonar analysis
- task: SonarCloudPrepare@1
env:
SONAR_SCANNER_OPTS: ''
inputs:
SonarCloud: 'SonarCloud'
organization: 'radarr'
scannerMode: 'CLI'
configMode: 'manual'
cliProjectKey: 'Radarr_Radarr.UI'
cliProjectName: 'RadarrI'
cliProjectVersion: '$(radarrVersion)'
cliSources: './frontend'
- task: SonarCloudAnalyze@1
# - job: Analyze_Backend
# displayName: Backend
# condition: eq(variables['system.pullrequest.isfork'], false)
# pool:
# vmImage: windows-2019
# steps:
# - checkout: self # Need history for Sonar analysis
# submodules: true
# - task: UseDotNet@2
# displayName: 'Install .net core'
# inputs:
# version: $(dotnetVersion)
# - task: SonarCloudPrepare@1
# inputs:
# SonarCloud: 'SonarCloud'
# organization: 'radarr'
# scannerMode: 'MSBuild'
# projectKey: 'radarr_Radarr'
# projectName: 'Radarr'
# projectVersion: '$(radarrVersion)'
# extraProperties: |
# sonar.exclusions=**/obj/**,**/*.dll,**/NzbDrone.Core.Test/Files/**/*,./frontend/**,**/ExternalModules/**,./src/Libraries/**
# sonar.coverage.exclusions=**/Radarr.Api.V1/**/*,**/MonoTorrent/**/*,**/Marr.Data/**/*
# sonar.cs.opencover.reportsPaths=$(Build.SourcesDirectory)/_tests/CoverageResults/coverage.opencover.xml
# sonar.cs.nunit.reportsPaths=$(Build.SourcesDirectory)/TestResult.xml
# - task: DotNetCoreCLI@2
# displayName: Build backend
# inputs:
# command: 'build'
# projects: 'src/Radarr.Windows.sln'
# - task: Bash@3
# displayName: Coverage Unit Tests
# inputs:
# targetType: 'filePath'
# filePath: ./test.sh
# arguments: Windows Unit Coverage
# - task: PublishCodeCoverageResults@1
# displayName: Publish Coverage Results
# inputs:
# codeCoverageTool: 'cobertura'
# summaryFileLocation: './_tests/CoverageResults/coverage.cobertura.xml'
# - task: SonarCloudAnalyze@1
- job: Analyze_Backend
displayName: Backend
pool:
vmImage: windows-2019
variables:
disable.coverage.autogenerate: 'true'
steps:
- task: UseDotNet@2
displayName: 'Install .net core'
inputs:
version: $(dotnetVersion)
- checkout: self # Need history for Sonar analysis
submodules: true
- powershell: Set-Service SCardSvr -StartupType Manual
displayName: Enable Windows Test Service
- task: SonarCloudPrepare@1
inputs:
SonarCloud: 'SonarCloud'
organization: 'radarr'
scannerMode: 'MSBuild'
projectKey: 'Radarr_Radarr'
projectName: 'Radarr'
projectVersion: '$(radarrVersion)'
extraProperties: |
sonar.exclusions=**/obj/**,**/*.dll,**/NzbDrone.Core.Test/Files/**/*,./frontend/**,**/ExternalModules/**,./src/Libraries/**
sonar.coverage.exclusions=**/Radarr.Api.V3/**/*,**/Radarr.Api/**/*,**/MonoTorrent/**/*,**/Marr.Data/**/*
sonar.cs.opencover.reportsPaths=$(Build.SourcesDirectory)/CoverageResults/**/coverage.opencover.xml
sonar.cs.nunit.reportsPaths=$(Build.SourcesDirectory)/TestResult.xml
- bash: |
./build.sh --backend -f netcoreapp3.1 -r win-x64
TEST_DIR=_tests/netcoreapp3.1/win-x64/publish/ ./test.sh Windows Unit Coverage
displayName: Coverage Unit Tests
- task: SonarCloudAnalyze@1
displayName: Publish SonarCloud Results
- task: reportgenerator@4
displayName: Generate Coverage Report
inputs:
reports: '$(Build.SourcesDirectory)/CoverageResults/**/coverage.opencover.xml'
targetdir: '$(Build.SourcesDirectory)/CoverageResults/combined'
reporttypes: 'HtmlInline_AzurePipelines;Cobertura;Badges'
- task: PublishCodeCoverageResults@1
displayName: Publish Coverage Report
inputs:
codeCoverageTool: 'cobertura'
summaryFileLocation: './CoverageResults/combined/Cobertura.xml'
reportDirectory: './CoverageResults/combined/'

View File

@ -9,6 +9,9 @@
<PackageReference Include="NunitXml.TestLogger" Version="2.1.41" />
<PackageReference Include="NBuilder" Version="6.0.1" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'">
<PackageReference Include="coverlet.collector" Version="1.1.0" PrivateAssets="all" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\NzbDrone.Core\Radarr.Core.csproj" />
<ProjectReference Include="..\NzbDrone.Test.Common\Radarr.Test.Common.csproj" />

View File

@ -8,6 +8,9 @@
<PackageReference Include="NUnit3TestAdapter" Version="3.15.1" />
<PackageReference Include="NunitXml.TestLogger" Version="2.1.41" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'">
<PackageReference Include="coverlet.collector" Version="1.1.0" PrivateAssets="all" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\NzbDrone.Host\Radarr.Host.csproj" />
<ProjectReference Include="..\NzbDrone.Test.Common\Radarr.Test.Common.csproj" />

View File

@ -10,6 +10,9 @@
<PackageReference Include="NBuilder" Version="6.0.1" />
<PackageReference Include="System.Data.SQLite.Core.Lidarr" Version="1.0.111.0-5" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'">
<PackageReference Include="coverlet.collector" Version="1.1.0" PrivateAssets="all" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\NzbDrone.Test.Common\Radarr.Test.Common.csproj" />
<ProjectReference Include="..\NzbDrone.Core\Radarr.Core.csproj" />

View File

@ -8,6 +8,9 @@
<PackageReference Include="NUnit3TestAdapter" Version="3.15.1" />
<PackageReference Include="NunitXml.TestLogger" Version="2.1.41" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'">
<PackageReference Include="coverlet.collector" Version="1.1.0" PrivateAssets="all" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\NzbDrone.Host\Radarr.Host.csproj" />
<ProjectReference Include="..\NzbDrone.Test.Common\Radarr.Test.Common.csproj" />

View File

@ -8,6 +8,9 @@
<PackageReference Include="NUnit3TestAdapter" Version="3.15.1" />
<PackageReference Include="NunitXml.TestLogger" Version="2.1.41" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'">
<PackageReference Include="coverlet.collector" Version="1.1.0" PrivateAssets="all" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\NzbDrone.Test.Common\Radarr.Test.Common.csproj" />
</ItemGroup>

View File

@ -16,6 +16,7 @@
See https://github.com/xamarin/XamarinComponents/issues/282
-->
<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'">
<PackageReference Include="coverlet.collector" Version="1.1.0" PrivateAssets="all" />
<PackageReference Include="Mono.Posix.NETStandard" Version="1.0.0" />
</ItemGroup>
<ItemGroup>

View File

@ -8,6 +8,9 @@
<PackageReference Include="NUnit3TestAdapter" Version="3.15.1" />
<PackageReference Include="NunitXml.TestLogger" Version="2.1.41" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'">
<PackageReference Include="coverlet.collector" Version="1.1.0" PrivateAssets="all" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\NzbDrone.Test.Common\Radarr.Test.Common.csproj" />
<ProjectReference Include="..\NzbDrone.Update\Radarr.Update.csproj" />

View File

@ -8,6 +8,9 @@
<PackageReference Include="NUnit3TestAdapter" Version="3.15.1" />
<PackageReference Include="NunitXml.TestLogger" Version="2.1.41" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'">
<PackageReference Include="coverlet.collector" Version="1.1.0" PrivateAssets="all" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\NzbDrone.Common.Test\Radarr.Common.Test.csproj" />
<ProjectReference Include="..\NzbDrone.Test.Common\Radarr.Test.Common.csproj" />

21
src/coverlet.runsettings Normal file
View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8" ?>
<RunSettings>
<DataCollectionRunSettings>
<DataCollectors>
<DataCollector friendlyName="XPlat code coverage">
<Configuration>
<Format>opencover</Format>
<Exclude>[Radarr.*.Test]*,[Radarr.Test.*]*,[Radarr.Api*]*,[Marr.Data]*,[MonoTorrent]*</Exclude>
</Configuration>
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>
<InProcDataCollectionRunSettings>
<InProcDataCollectors>
<InProcDataCollector assemblyQualifiedName="Coverlet.Collector.DataCollection.CoverletInProcDataCollector, coverlet.collector, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null"
friendlyName="XPlat Code Coverage"
enabled="True"
codebase="coverlet.collector.dll" />
</InProcDataCollectors>
</InProcDataCollectionRunSettings>
</RunSettings>

23
test.sh
View File

@ -16,16 +16,12 @@ if [ -d "$TEST_DIR/_tests" ]; then
TEST_DIR="$TEST_DIR/_tests"
fi
COVERAGE_RESULT_DIRECTORY="$TEST_DIR/CoverageResults/"
rm -f "$TEST_LOG_FILE"
# Uncomment to log test output to a file instead of the console
export RADARR_TESTS_LOG_OUTPUT="File"
NUNIT="dotnet vstest"
NUNIT_COMMAND="$NUNIT"
NUNIT_PARAMS="--Platform:x64 --logger:nunit;LogFilePath=TestResult.xml"
VSTEST_PARAMS="--Platform:x64 --logger:nunit;LogFilePath=TestResult.xml"
if [ "$PLATFORM" = "Mac" ]; then
@ -63,20 +59,13 @@ for i in `find $TEST_DIR -name "$TEST_PATTERN"`;
do ASSEMBLIES="$ASSEMBLIES $i"
done
DOTNET_PARAMS="$ASSEMBLIES --TestCaseFilter:$WHERE $VSTEST_PARAMS"
if [ "$COVERAGE" = "Coverage" ]; then
if [ "$PLATFORM" = "Windows" ] || [ "$PLATFORM" = "Linux" ]; then
dotnet tool install coverlet.console --tool-path="$TEST_DIR/coverlet/"
mkdir $COVERAGE_RESULT_DIRECTORY
OPEN_COVER="$TEST_DIR/coverlet/coverlet"
$OPEN_COVER "$TEST_DIR/" --verbosity "detailed" --format "cobertura" --format "opencover" --output "$COVERAGE_RESULT_DIRECTORY" --exclude "[Radarr.*.Test]*" --exclude "[Radarr.Test.*]*" --exclude "[Radarr.Api*]*" --exclude "[Marr.Data]*" --exclude "[MonoTorrent]*" --exclude "[CurlSharp]*" --target "$NUNIT" --targetargs "$NUNIT_PARAMS --where=\"$WHERE\" $ASSEMBLIES";
EXIT_CODE=$?
else
echo "Coverage only supported on Windows and Linux"
exit 3
fi
dotnet vstest $DOTNET_PARAMS --settings:"src/coverlet.runsettings" --ResultsDirectory:./CoverageResults
EXIT_CODE=$?
elif [ "$COVERAGE" = "Test" ] ; then
echo "$NUNIT_COMMAND $ASSEMBLIES --TestCaseFilter:$WHERE $NUNIT_PARAMS"
$NUNIT_COMMAND $ASSEMBLIES --TestCaseFilter:"$WHERE" $NUNIT_PARAMS
dotnet vstest $DOTNET_PARAMS
EXIT_CODE=$?
else
echo "Run Type must be provided as third argument: Coverage or Test"