99 lines
3.4 KiB
YAML
99 lines
3.4 KiB
YAML
parameters:
|
|
- name: ImageNames
|
|
type: object
|
|
default:
|
|
Linux: "ubuntu-latest"
|
|
Windows: "windows-latest"
|
|
macOS: "macos-latest"
|
|
- name: TestProjects
|
|
type: string
|
|
default: "tests/**/*Tests.csproj"
|
|
- name: DotNetSdkVersion
|
|
type: string
|
|
default: 6.0.x
|
|
|
|
jobs:
|
|
- job: Test
|
|
displayName: Test
|
|
strategy:
|
|
matrix:
|
|
${{ each imageName in parameters.ImageNames }}:
|
|
${{ imageName.key }}:
|
|
ImageName: ${{ imageName.value }}
|
|
pool:
|
|
vmImage: "$(ImageName)"
|
|
steps:
|
|
- checkout: self
|
|
clean: true
|
|
submodules: true
|
|
persistCredentials: false
|
|
|
|
# This is required for the SonarCloud analyzer
|
|
- task: UseDotNet@2
|
|
displayName: "Install .NET SDK 5.x"
|
|
condition: eq(variables['ImageName'], 'ubuntu-latest')
|
|
inputs:
|
|
packageType: sdk
|
|
version: '5.x'
|
|
|
|
- task: UseDotNet@2
|
|
displayName: "Update DotNet"
|
|
inputs:
|
|
packageType: sdk
|
|
version: ${{ parameters.DotNetSdkVersion }}
|
|
|
|
- task: SonarCloudPrepare@1
|
|
displayName: 'Prepare analysis on SonarCloud'
|
|
condition: eq(variables['ImageName'], 'ubuntu-latest')
|
|
enabled: false
|
|
inputs:
|
|
SonarCloud: 'Sonarcloud for Jellyfin'
|
|
organization: 'jellyfin'
|
|
projectKey: 'jellyfin_jellyfin'
|
|
|
|
- task: DotNetCoreCLI@2.210.0
|
|
displayName: 'Run CLI Tests'
|
|
inputs:
|
|
command: "test"
|
|
projects: ${{ parameters.TestProjects }}
|
|
arguments: '--configuration Release --collect:"XPlat Code Coverage" --settings tests/coverletArgs.runsettings --verbosity minimal'
|
|
publishTestResults: true
|
|
testRunTitle: $(Agent.JobName)
|
|
workingDirectory: "$(Build.SourcesDirectory)"
|
|
|
|
- task: SonarCloudAnalyze@1
|
|
displayName: 'Run Code Analysis'
|
|
condition: eq(variables['ImageName'], 'ubuntu-latest')
|
|
enabled: false
|
|
|
|
- task: SonarCloudPublish@1
|
|
displayName: 'Publish Quality Gate Result'
|
|
condition: eq(variables['ImageName'], 'ubuntu-latest')
|
|
enabled: false
|
|
|
|
- task: Palmmedia.reportgenerator.reportgenerator-build-release-task.reportgenerator@4
|
|
condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux')) # !! THIS is for V1 only V2 will/should support merging
|
|
displayName: 'Run ReportGenerator'
|
|
inputs:
|
|
reports: "$(Agent.TempDirectory)/**/coverage.cobertura.xml"
|
|
targetdir: "$(Agent.TempDirectory)/merged/"
|
|
reporttypes: "Cobertura"
|
|
|
|
## V2 is already in the repository but it does not work "wrong number of segments" YAML error.
|
|
- task: PublishCodeCoverageResults@1
|
|
condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux')) # !! THIS is for V1 only V2 will/should support merging
|
|
displayName: 'Publish Code Coverage'
|
|
inputs:
|
|
codeCoverageTool: "cobertura"
|
|
#summaryFileLocation: '$(Agent.TempDirectory)/**/coverage.cobertura.xml' # !!THIS IS FOR V2
|
|
summaryFileLocation: "$(Agent.TempDirectory)/merged/**.xml"
|
|
pathToSources: $(Build.SourcesDirectory)
|
|
failIfCoverageEmpty: true
|
|
|
|
- task: PublishPipelineArtifact@1
|
|
displayName: 'Publish OpenAPI Artifact'
|
|
condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux'))
|
|
inputs:
|
|
targetPath: "tests/Jellyfin.Server.Integration.Tests/bin/Release/net6.0/openapi.json"
|
|
artifactName: 'OpenAPI Spec'
|