azure-pipelines.yml 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. jobs:
  2. - job: GetPRNumber
  3. pool:
  4. vmImage: 'ubuntu-22.04'
  5. variables:
  6. SolutionDir: '$(Build.SourcesDirectory)'
  7. steps:
  8. - task: UseDotNet@2
  9. displayName: 'Use .NET 8.0 SDK'
  10. inputs:
  11. packageType: sdk
  12. useGlobalJson: true
  13. - task: CmdLine@2
  14. displayName: 'Run Build'
  15. inputs:
  16. script: ./build.sh --target OutputVersion --version-output-dir $(Build.ArtifactStagingDirectory)
  17. - task: PublishBuildArtifacts@1
  18. inputs:
  19. PathtoPublish: '$(Build.ArtifactStagingDirectory)'
  20. ArtifactName: 'PRNumber'
  21. publishLocation: 'Container'
  22. - job: Linux
  23. pool:
  24. vmImage: 'ubuntu-22.04'
  25. steps:
  26. - task: UseDotNet@2
  27. displayName: 'Use .NET 6.0 Runtime'
  28. inputs:
  29. packageType: runtime
  30. version: 6.0.x
  31. - task: UseDotNet@2
  32. displayName: 'Use .NET 8.0 SDK'
  33. inputs:
  34. packageType: sdk
  35. useGlobalJson: true
  36. - task: CmdLine@2
  37. displayName: 'Install Workloads'
  38. inputs:
  39. script: |
  40. dotnet workload install android macos wasm-tools
  41. - task: CmdLine@2
  42. displayName: 'Run Build'
  43. inputs:
  44. script: |
  45. dotnet --info
  46. printenv
  47. ./build.sh --target CiAzureLinux --configuration=Release
  48. - task: PublishTestResults@2
  49. inputs:
  50. testResultsFormat: 'VSTest'
  51. testResultsFiles: '$(Build.SourcesDirectory)/artifacts/test-results/*.trx'
  52. condition: not(canceled())
  53. - job: macOS
  54. variables:
  55. SolutionDir: '$(Build.SourcesDirectory)'
  56. pool:
  57. vmImage: 'macos-13'
  58. steps:
  59. - task: UseDotNet@2
  60. displayName: 'Use .NET 6.0 Runtime'
  61. inputs:
  62. packageType: runtime
  63. version: 6.0.x
  64. - task: UseDotNet@2
  65. displayName: 'Use .NET 8.0 SDK'
  66. inputs:
  67. packageType: sdk
  68. useGlobalJson: true
  69. - task: CmdLine@2
  70. displayName: 'Install Workloads'
  71. inputs:
  72. script: |
  73. dotnet workload install android ios maccatalyst macos wasm-tools
  74. - task: CmdLine@2
  75. displayName: 'Generate avalonia-native'
  76. inputs:
  77. script: |
  78. export COREHOST_TRACE=0
  79. export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
  80. export DOTNET_CLI_TELEMETRY_OPTOUT=1
  81. ./build.sh --target GenerateCppHeaders --configuration Release
  82. - task: Xcode@5
  83. inputs:
  84. actions: 'build'
  85. scheme: ''
  86. sdk: 'macosx14.2'
  87. configuration: 'Release'
  88. xcWorkspacePath: '**/*.xcodeproj/project.xcworkspace'
  89. xcodeVersion: 'specifyPath' # Options: 8, 9, default, specifyPath
  90. xcodeDeveloperDir: '/Applications/Xcode_15.2.app/Contents/Developer'
  91. args: '-derivedDataPath ./'
  92. - task: CmdLine@2
  93. displayName: 'Run Build'
  94. inputs:
  95. script: |
  96. export COREHOST_TRACE=0
  97. export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
  98. export DOTNET_CLI_TELEMETRY_OPTOUT=1
  99. which dotnet
  100. dotnet --info
  101. printenv
  102. ./build.sh --target CiAzureOSX --configuration Release --skip-previewer
  103. - task: PublishTestResults@2
  104. inputs:
  105. testResultsFormat: 'VSTest'
  106. testResultsFiles: '$(Build.SourcesDirectory)/artifacts/test-results/*.trx'
  107. condition: not(canceled())
  108. - task: PublishBuildArtifacts@1
  109. inputs:
  110. pathToPublish: '$(Build.SourcesDirectory)/Build/Products/Release/'
  111. artifactName: 'Avalonia.Native.OSX'
  112. condition: succeeded()
  113. - task: PublishBuildArtifacts@1
  114. inputs:
  115. pathtoPublish: '$(Build.SourcesDirectory)/artifacts/nuget'
  116. artifactName: 'NuGetOSX'
  117. condition: succeeded()
  118. - job: Windows
  119. pool:
  120. vmImage: 'windows-2022'
  121. variables:
  122. SolutionDir: '$(Build.SourcesDirectory)'
  123. steps:
  124. - task: UseDotNet@2
  125. displayName: 'Use .NET 6.0 Runtime'
  126. inputs:
  127. packageType: runtime
  128. version: 6.0.x
  129. - task: UseDotNet@2
  130. displayName: 'Use .NET 8.0 SDK'
  131. inputs:
  132. packageType: sdk
  133. useGlobalJson: true
  134. - task: CmdLine@2
  135. displayName: 'Install Workloads'
  136. inputs:
  137. script: |
  138. dotnet workload install android maccatalyst ios tvos wasm-tools
  139. - task: CmdLine@2
  140. displayName: 'Install Nuke'
  141. inputs:
  142. script: |
  143. dotnet tool install --global Nuke.GlobalTool --version 6.2.1
  144. - task: CmdLine@2
  145. displayName: 'Run Nuke'
  146. inputs:
  147. script: |
  148. set PATH=%PATH%;%USERPROFILE%\.dotnet\tools
  149. nuke --target CiAzureWindows --configuration Release
  150. - task: PublishTestResults@2
  151. inputs:
  152. testResultsFormat: 'VSTest'
  153. testResultsFiles: '$(Build.SourcesDirectory)/artifacts/test-results/*.trx'
  154. condition: not(canceled())
  155. - task: PublishBuildArtifacts@1
  156. inputs:
  157. pathtoPublish: '$(Build.SourcesDirectory)/artifacts/nuget'
  158. artifactName: 'NuGet'
  159. condition: succeeded()
  160. - task: PublishBuildArtifacts@1
  161. inputs:
  162. pathToPublish: '$(Build.SourcesDirectory)/artifacts/zip'
  163. artifactName: 'Samples'
  164. condition: succeeded()