|
|
|
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"
|
|
|
|
artifact: "$(NugetPackageName)"
|
|
|
|
path: "$(System.ArtifactsDirectory)/new-artifacts"
|
|
|
|
runVersion: "latest"
|
|
|
|
|
|
|
|
- task: CopyFiles@2
|
|
|
|
displayName: "Copy New Assembly Build Artifact"
|
|
|
|
inputs:
|
|
|
|
sourceFolder: $(System.ArtifactsDirectory)/new-artifacts
|
|
|
|
contents: "**/*.dll"
|
|
|
|
targetFolder: $(System.ArtifactsDirectory)/new-release
|
|
|
|
cleanTargetFolder: true
|
|
|
|
overWrite: true
|
|
|
|
flattenFolders: true
|
|
|
|
|
|
|
|
- task: DownloadPipelineArtifact@2
|
|
|
|
displayName: "Download Reference Assembly Build Artifact"
|
|
|
|
inputs:
|
|
|
|
source: "specific"
|
|
|
|
artifact: "$(NugetPackageName)"
|
|
|
|
path: "$(System.ArtifactsDirectory)/current-artifacts"
|
|
|
|
project: "$(System.TeamProjectId)"
|
|
|
|
pipeline: "$(System.DefinitionId)"
|
|
|
|
runVersion: "latestFromBranch"
|
|
|
|
runBranch: "refs/heads/$(System.PullRequest.TargetBranch)"
|
|
|
|
|
|
|
|
- task: CopyFiles@2
|
|
|
|
displayName: "Copy Reference Assembly Build Artifact"
|
|
|
|
inputs:
|
|
|
|
sourceFolder: $(System.ArtifactsDirectory)/current-artifacts
|
|
|
|
contents: "**/*.dll"
|
|
|
|
targetFolder: $(System.ArtifactsDirectory)/current-release
|
|
|
|
cleanTargetFolder: true
|
|
|
|
overWrite: true
|
|
|
|
flattenFolders: true
|
|
|
|
|
|
|
|
- task: DownloadGitHubRelease@0
|
|
|
|
displayName: "Download ABI Compatibility Check Tool"
|
|
|
|
inputs:
|
|
|
|
connection: Jellyfin Release Download
|
|
|
|
userRepository: EraYaN/dotnet-compatibility
|
|
|
|
defaultVersionType: "latest"
|
|
|
|
itemPattern: "**-ci.zip"
|
|
|
|
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)
|