azure-pipelines.ix.yml 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. trigger:
  2. branches:
  3. include:
  4. - main
  5. - rel/*
  6. paths:
  7. include:
  8. - Ix.NET/Source/*
  9. - .editorconfig
  10. - azure-pipelines.ix.yml
  11. pr:
  12. branches:
  13. include:
  14. - main
  15. - rel/*
  16. paths:
  17. include:
  18. - Ix.NET/Source/*
  19. - .editorconfig
  20. - azure-pipelines.ix.yml
  21. variables:
  22. BuildConfiguration: Release
  23. DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
  24. stages:
  25. - stage: Build
  26. jobs:
  27. - job: Build
  28. pool:
  29. vmImage: windows-latest
  30. steps:
  31. - task: UseDotNet@2
  32. displayName: Use .NET Core 8.x SDK
  33. inputs:
  34. version: 8.x
  35. - task: UseDotNet@2
  36. displayName: .NET 6.0 runtime
  37. inputs:
  38. version: '6.x'
  39. packageType: runtime
  40. - task: DotNetCoreCLI@2
  41. inputs:
  42. command: custom
  43. custom: tool
  44. arguments: install --tool-path . nbgv
  45. displayName: Install NBGV tool
  46. - script: nbgv cloud -a -p Ix.NET/Source
  47. displayName: Set Version
  48. - task: DotNetCoreCLI@2
  49. inputs:
  50. command: restore
  51. projects: Ix.NET/Source/**/*.csproj
  52. displayName: Restore
  53. # Since we can no longer use MSBuild.Extras.SDK, the reference assembly projects don't get built automatically
  54. # when the corresponding main project run, so we need this extra build step to ensure that the files exist by
  55. # the time pack runs
  56. - task: DotNetCoreCLI@2
  57. inputs:
  58. command: build
  59. arguments: -c $(BuildConfiguration)
  60. projects: Ix.NET/Source/refs/**/*.csproj
  61. displayName: Build reference assemblies
  62. - task: DotNetCoreCLI@2
  63. inputs:
  64. command: pack
  65. packagesToPack: Ix.NET/Source/**/System.Interactive*.csproj;Ix.NET/Source/**/System.Linq.*.csproj;!Ix.NET/Source/**/*.Tests*.csproj;!Ix.NET/Source/refs/**
  66. configuration: $(BuildConfiguration)
  67. packDirectory: $(Build.ArtifactStagingDirectory)/artifacts
  68. verbosityPack: Minimal
  69. displayName: Pack
  70. - task: DotNetCoreCLI@2
  71. inputs:
  72. command: custom
  73. custom: tool
  74. arguments: install --tool-path . dotnet-reportgenerator-globaltool
  75. displayName: Install ReportGenerator tool
  76. - task: DotNetCoreCLI@2
  77. inputs:
  78. command: test
  79. projects: Ix.NET/Source/**/*.Tests.csproj
  80. arguments: -c $(BuildConfiguration) --settings Ix.NET/Source/CodeCoverage.runsettings --collect:"XPlat Code Coverage" -- RunConfiguration.DisableAppDomain=true
  81. displayName: Run Tests
  82. - script: reportgenerator -reports:$(Agent.TempDirectory)/**/coverage.cobertura.xml -targetdir:$(Build.SourcesDirectory)/Ix.NET/Source/coverlet/reports -reporttypes:"Cobertura"
  83. displayName: Create reports
  84. - task: PublishCodeCoverageResults@1
  85. displayName: 'Publish code coverage'
  86. inputs:
  87. codeCoverageTool: Cobertura
  88. summaryFileLocation: $(Build.SourcesDirectory)/Ix.NET/Source/coverlet/reports/Cobertura.xml
  89. - publish: Ix.NET/Source/build
  90. artifact: config
  91. displayName: Publish signing config
  92. - publish: $(Build.ArtifactStagingDirectory)/artifacts
  93. displayName: Publish artifacts
  94. artifact: BuildPackages
  95. - stage: CodeSign
  96. condition: and(succeeded('Build'), not(eq(variables['build.reason'], 'PullRequest')))
  97. jobs:
  98. - deployment: CodeSign
  99. displayName: Code Signing
  100. pool:
  101. vmImage: windows-latest
  102. environment: Code Sign
  103. variables:
  104. - group: SignClient Credentials
  105. strategy:
  106. runOnce:
  107. deploy:
  108. steps:
  109. - task: UseDotNet@2
  110. displayName: Use .NET 8.0.x SDK
  111. inputs:
  112. version: 8.0.x
  113. performMultiLevelLookup: true
  114. - task: DotNetCoreCLI@2
  115. displayName: Install SignTool tool
  116. inputs:
  117. command: custom
  118. custom: tool
  119. arguments: install --tool-path . sign --version 0.9.1-beta.24406.1
  120. - task: AzureCLI@2
  121. inputs:
  122. azureSubscription: 'Rx.NET Sign Service Connection'
  123. scriptType: pscore
  124. scriptLocation: inlineScript
  125. inlineScript: |
  126. .\sign code azure-key-vault `
  127. "**/*.nupkg" `
  128. --base-directory "$(Pipeline.Workspace)\BuildPackages" `
  129. --publisher-name "Reactive Extensions for .NET (.NET Foundation)" `
  130. --description "Ix.NET" `
  131. --description-url "https://github.com/dotnet/reactive" `
  132. --azure-key-vault-url "$(SignKeyVaultUrl)" `
  133. --azure-key-vault-certificate "$(SignKeyVaultCertificateName)"
  134. displayName: Sign packages
  135. - publish: $(Pipeline.Workspace)/BuildPackages
  136. displayName: Publish Signed Packages
  137. artifact: SignedPackages