azure-pipelines-compat.yml 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. parameters:
  2. - name: Packages
  3. type: object
  4. default: {}
  5. - name: LinuxImage
  6. type: string
  7. default: "ubuntu-latest"
  8. - name: DotNetSdkVersion
  9. type: string
  10. default: 3.1.100
  11. jobs:
  12. - job: CompatibilityCheck
  13. displayName: Compatibility Check
  14. pool:
  15. vmImage: "${{ parameters.LinuxImage }}"
  16. # only execute for pull requests
  17. condition: and(succeeded(), variables['System.PullRequest.PullRequestNumber'])
  18. strategy:
  19. matrix:
  20. ${{ each Package in parameters.Packages }}:
  21. ${{ Package.key }}:
  22. NugetPackageName: ${{ Package.value.NugetPackageName }}
  23. AssemblyFileName: ${{ Package.value.AssemblyFileName }}
  24. maxParallel: 2
  25. dependsOn: Build
  26. steps:
  27. - checkout: none
  28. - task: UseDotNet@2
  29. displayName: "Update DotNet"
  30. inputs:
  31. packageType: sdk
  32. version: ${{ parameters.DotNetSdkVersion }}
  33. - task: DownloadPipelineArtifact@2
  34. displayName: "Download New Assembly Build Artifact"
  35. inputs:
  36. source: "current"
  37. artifact: "$(NugetPackageName)"
  38. path: "$(System.ArtifactsDirectory)/new-artifacts"
  39. runVersion: "latest"
  40. - task: CopyFiles@2
  41. displayName: "Copy New Assembly Build Artifact"
  42. inputs:
  43. sourceFolder: $(System.ArtifactsDirectory)/new-artifacts
  44. contents: "**/*.dll"
  45. targetFolder: $(System.ArtifactsDirectory)/new-release
  46. cleanTargetFolder: true
  47. overWrite: true
  48. flattenFolders: true
  49. - task: DownloadPipelineArtifact@2
  50. displayName: "Download Reference Assembly Build Artifact"
  51. inputs:
  52. source: "specific"
  53. artifact: "$(NugetPackageName)"
  54. path: "$(System.ArtifactsDirectory)/current-artifacts"
  55. project: "$(System.TeamProjectId)"
  56. pipeline: "$(System.DefinitionId)"
  57. runVersion: "latestFromBranch"
  58. runBranch: "refs/heads/$(System.PullRequest.TargetBranch)"
  59. - task: CopyFiles@2
  60. displayName: "Copy Reference Assembly Build Artifact"
  61. inputs:
  62. sourceFolder: $(System.ArtifactsDirectory)/current-artifacts
  63. contents: "**/*.dll"
  64. targetFolder: $(System.ArtifactsDirectory)/current-release
  65. cleanTargetFolder: true
  66. overWrite: true
  67. flattenFolders: true
  68. - task: DownloadGitHubRelease@0
  69. displayName: "Download ABI Compatibility Check Tool"
  70. inputs:
  71. connection: Jellyfin Release Download
  72. userRepository: EraYaN/dotnet-compatibility
  73. defaultVersionType: "latest"
  74. itemPattern: "**-ci.zip"
  75. downloadPath: "$(System.ArtifactsDirectory)"
  76. - task: ExtractFiles@1
  77. displayName: "Extract ABI Compatibility Check Tool"
  78. inputs:
  79. archiveFilePatterns: "$(System.ArtifactsDirectory)/*-ci.zip"
  80. destinationFolder: $(System.ArtifactsDirectory)/tools
  81. cleanDestinationFolder: true
  82. # The `--warnings-only` switch will swallow the return code and not emit any errors.
  83. - task: CmdLine@2
  84. displayName: "Execute ABI Compatibility Check Tool"
  85. inputs:
  86. script: "dotnet tools/CompatibilityCheckerCLI.dll current-release/$(AssemblyFileName) new-release/$(AssemblyFileName) --azure-pipelines --warnings-only"
  87. workingDirectory: $(System.ArtifactsDirectory)