azure-pipelines-abi.yml 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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: DotNetCoreCLI@2
  34. displayName: 'Install ABI CompatibilityChecker tool'
  35. inputs:
  36. command: custom
  37. custom: tool
  38. arguments: 'update compatibilitychecker -g'
  39. - task: DownloadPipelineArtifact@2
  40. displayName: "Download New Assembly Build Artifact"
  41. inputs:
  42. source: "current"
  43. artifact: "$(NugetPackageName)"
  44. path: "$(System.ArtifactsDirectory)/new-artifacts"
  45. runVersion: "latest"
  46. - task: CopyFiles@2
  47. displayName: "Copy New Assembly Build Artifact"
  48. inputs:
  49. sourceFolder: $(System.ArtifactsDirectory)/new-artifacts
  50. contents: "**/*.dll"
  51. targetFolder: $(System.ArtifactsDirectory)/new-release
  52. cleanTargetFolder: true
  53. overWrite: true
  54. flattenFolders: true
  55. - task: DownloadPipelineArtifact@2
  56. displayName: "Download Reference Assembly Build Artifact"
  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. inputs:
  68. sourceFolder: $(System.ArtifactsDirectory)/current-artifacts
  69. contents: "**/*.dll"
  70. targetFolder: $(System.ArtifactsDirectory)/current-release
  71. cleanTargetFolder: true
  72. overWrite: true
  73. flattenFolders: true
  74. # The `--warnings-only` switch will swallow the return code and not emit any errors.
  75. - task: DotNetCoreCLI@2
  76. displayName: 'Execute ABI Compatibility Check Tool'
  77. inputs:
  78. command: custom
  79. custom: compat
  80. arguments: 'current-release/$(AssemblyFileName) new-release/$(AssemblyFileName) --azure-pipelines --warnings-only'
  81. workingDirectory: $(System.ArtifactsDirectory)