azure-pipelines-abi.yml 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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: 7.0.x
  11. jobs:
  12. - job: CompatibilityCheck
  13. displayName: Compatibility Check
  14. dependsOn: Build
  15. condition: and(succeeded(), variables['System.PullRequest.PullRequestNumber'])
  16. pool:
  17. vmImage: "${{ parameters.LinuxImage }}"
  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. steps:
  26. - checkout: none
  27. - task: UseDotNet@2
  28. displayName: "Update DotNet"
  29. inputs:
  30. packageType: sdk
  31. version: ${{ parameters.DotNetSdkVersion }}
  32. - task: DotNetCoreCLI@2
  33. displayName: 'Install ABI CompatibilityChecker Tool'
  34. inputs:
  35. command: custom
  36. custom: tool
  37. arguments: 'update compatibilitychecker -g'
  38. - task: DownloadPipelineArtifact@2
  39. displayName: 'Download New Assembly Build Artifact'
  40. inputs:
  41. source: 'current'
  42. artifact: "$(NugetPackageName)"
  43. path: "$(System.ArtifactsDirectory)/new-artifacts"
  44. runVersion: "latest"
  45. - task: CopyFiles@2
  46. displayName: 'Copy New Assembly Build Artifact'
  47. inputs:
  48. sourceFolder: $(System.ArtifactsDirectory)/new-artifacts
  49. contents: '**/*.dll'
  50. targetFolder: $(System.ArtifactsDirectory)/new-release
  51. cleanTargetFolder: true
  52. overWrite: true
  53. flattenFolders: true
  54. - task: DownloadPipelineArtifact@2
  55. displayName: 'Download Reference Assembly Build Artifact'
  56. enabled: false
  57. inputs:
  58. source: "specific"
  59. artifact: "$(NugetPackageName)"
  60. path: "$(System.ArtifactsDirectory)/current-artifacts"
  61. project: "$(System.TeamProjectId)"
  62. pipeline: "$(System.DefinitionId)"
  63. runVersion: "latestFromBranch"
  64. runBranch: "refs/heads/$(System.PullRequest.TargetBranch)"
  65. - task: CopyFiles@2
  66. displayName: 'Copy Reference Assembly Build Artifact'
  67. enabled: false
  68. inputs:
  69. sourceFolder: $(System.ArtifactsDirectory)/current-artifacts
  70. contents: '**/*.dll'
  71. targetFolder: $(System.ArtifactsDirectory)/current-release
  72. cleanTargetFolder: true
  73. overWrite: true
  74. flattenFolders: true
  75. - task: DotNetCoreCLI@2
  76. displayName: 'Execute ABI Compatibility Check Tool'
  77. enabled: false
  78. inputs:
  79. command: custom
  80. custom: compat
  81. arguments: 'current-release/$(AssemblyFileName) new-release/$(AssemblyFileName) --azure-pipelines --warnings-only'
  82. workingDirectory: $(System.ArtifactsDirectory)