da91b4fa4c
Switch to cobertura for code coverage Switch to dotnet test for tests Add matrix run for different platforms Add extra variables for easier maintenance
96 lines
3.9 KiB
YAML
96 lines
3.9 KiB
YAML
parameters:
|
|
- name: Packages
|
|
type: object
|
|
default: {}
|
|
- name: LinuxImage
|
|
type: string
|
|
default: "ubuntu-latest"
|
|
- name: DotNetSdkVersion
|
|
type: string
|
|
default: 3.1.100
|
|
|
|
jobs:
|
|
- job: CompatibilityCheck
|
|
displayName: Compatibility Check
|
|
pool:
|
|
vmImage: "${{ parameters.LinuxImage}}"
|
|
# only execute for pull requests
|
|
condition: and(succeeded(), variables['System.PullRequest.PullRequestNumber'])
|
|
strategy:
|
|
matrix:
|
|
${{ each Package in parameters.Packages }}:
|
|
${{ Package.key }}:
|
|
NugetPackageName: ${{ Package.value.NugetPackageName }}
|
|
AssemblyFileName: ${{ Package.value.AssemblyFileName }}
|
|
maxParallel: 2
|
|
dependsOn: MainBuild
|
|
steps:
|
|
- checkout: none
|
|
|
|
- task: UseDotNet@2
|
|
displayName: "Update DotNet"
|
|
inputs:
|
|
packageType: sdk
|
|
version: ${{ parameters.DotNetSdkVersion }}
|
|
|
|
- task: DownloadPipelineArtifact@2
|
|
displayName: "Download New Assembly Build Artifact"
|
|
inputs:
|
|
source: "current" # Options: current, specific
|
|
artifact: "$(NugetPackageName)" # Optional
|
|
path: "$(System.ArtifactsDirectory)/new-artifacts"
|
|
runVersion: "latest" # Required when source == Specific. Options: latest, latestFromBranch, specific
|
|
|
|
- task: CopyFiles@2
|
|
displayName: "Copy New Assembly Build Artifact"
|
|
inputs:
|
|
sourceFolder: $(System.ArtifactsDirectory)/new-artifacts # Optional
|
|
contents: "**/*.dll"
|
|
targetFolder: $(System.ArtifactsDirectory)/new-release
|
|
cleanTargetFolder: true # Optional
|
|
overWrite: true # Optional
|
|
flattenFolders: true # Optional
|
|
|
|
- task: DownloadPipelineArtifact@2
|
|
displayName: "Download Reference Assembly Build Artifact"
|
|
inputs:
|
|
source: "specific" # Options: current, specific
|
|
artifact: "$(NugetPackageName)" # Optional
|
|
path: "$(System.ArtifactsDirectory)/current-artifacts"
|
|
project: "$(System.TeamProjectId)" # Required when source == Specific
|
|
pipeline: "$(System.DefinitionId)" # Required when source == Specific
|
|
runVersion: "latestFromBranch" # Required when source == Specific. Options: latest, latestFromBranch, specific
|
|
runBranch: "refs/heads/$(System.PullRequest.TargetBranch)" # Required when source == Specific && runVersion == LatestFromBranch
|
|
|
|
- task: CopyFiles@2
|
|
displayName: "Copy Reference Assembly Build Artifact"
|
|
inputs:
|
|
sourceFolder: $(System.ArtifactsDirectory)/current-artifacts # Optional
|
|
contents: "**/*.dll"
|
|
targetFolder: $(System.ArtifactsDirectory)/current-release
|
|
cleanTargetFolder: true # Optional
|
|
overWrite: true # Optional
|
|
flattenFolders: true # Optional
|
|
|
|
- task: DownloadGitHubRelease@0
|
|
displayName: "Download ABI Compatibility Check Tool"
|
|
inputs:
|
|
connection: Jellyfin Release Download
|
|
userRepository: EraYaN/dotnet-compatibility
|
|
defaultVersionType: "latest" # Options: latest, specificVersion, specificTag
|
|
itemPattern: "**-ci.zip" # Optional
|
|
downloadPath: "$(System.ArtifactsDirectory)"
|
|
|
|
- task: ExtractFiles@1
|
|
displayName: "Extract ABI Compatibility Check Tool"
|
|
inputs:
|
|
archiveFilePatterns: "$(System.ArtifactsDirectory)/*-ci.zip"
|
|
destinationFolder: $(System.ArtifactsDirectory)/tools
|
|
cleanDestinationFolder: true
|
|
|
|
# The `--warnings-only` switch will swallow the return code and not emit any errors.
|
|
- task: CmdLine@2
|
|
displayName: "Execute ABI Compatibility Check Tool"
|
|
inputs:
|
|
script: "dotnet tools/CompatibilityCheckerCLI.dll current-release/$(AssemblyFileName) new-release/$(AssemblyFileName) --azure-pipelines --warnings-only"
|
|
workingDirectory: $(System.ArtifactsDirectory) # Optional |