azure-pipelines.ix.yml 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  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: ubuntu-latest
  30. steps:
  31. - task: UseDotNet@2
  32. displayName: Use .NET Core 6.x SDK
  33. inputs:
  34. version: 6.x
  35. - task: UseDotNet@2
  36. displayName: .NET Core 3.1 runtime
  37. inputs:
  38. version: '3.1.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 -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. - task: DotNetCoreCLI@2
  54. inputs:
  55. command: pack
  56. packagesToPack: Ix.NET/Source/**/System.Interactive*.csproj;Ix.NET/Source/**/System.Linq.*.csproj;!Ix.NET/Source/**/*.Tests*.csproj;!Ix.NET/Source/refs/**
  57. configuration: $(BuildConfiguration)
  58. packDirectory: $(Build.ArtifactStagingDirectory)/artifacts
  59. verbosityPack: Minimal
  60. displayName: Pack
  61. - task: DotNetCoreCLI@2
  62. inputs:
  63. command: custom
  64. custom: tool
  65. arguments: install --tool-path . dotnet-reportgenerator-globaltool
  66. displayName: Install ReportGenerator tool
  67. - task: DotNetCoreCLI@2
  68. inputs:
  69. command: test
  70. projects: Ix.NET/Source/**/*.Tests.csproj
  71. arguments: -c $(BuildConfiguration) --settings Ix.NET/Source/CodeCoverage.runsettings --collect:"XPlat Code Coverage" -- RunConfiguration.DisableAppDomain=true
  72. displayName: Run Tests
  73. - script: ./reportgenerator -reports:$(Agent.TempDirectory)/**/coverage.cobertura.xml -targetdir:$(Build.SourcesDirectory)/Ix.NET/Source/coverlet/reports -reporttypes:"Cobertura"
  74. displayName: Create reports
  75. - task: PublishCodeCoverageResults@1
  76. displayName: 'Publish code coverage'
  77. inputs:
  78. codeCoverageTool: Cobertura
  79. summaryFileLocation: $(Build.SourcesDirectory)/Ix.NET/Source/coverlet/reports/Cobertura.xml
  80. - publish: Ix.NET/Source/build
  81. artifact: config
  82. displayName: Publish signing config
  83. - publish: $(Build.ArtifactStagingDirectory)/artifacts
  84. displayName: Publish artifacts
  85. artifact: BuildPackages
  86. - stage: CodeSign
  87. condition: and(succeeded('Build'), not(eq(variables['build.reason'], 'PullRequest')))
  88. jobs:
  89. - deployment: CodeSign
  90. displayName: Code Signing
  91. pool:
  92. vmImage: windows-latest
  93. environment: Code Sign
  94. variables:
  95. - group: SignClient Credentials
  96. strategy:
  97. runOnce:
  98. deploy:
  99. steps:
  100. - task: DotNetCoreCLI@2
  101. inputs:
  102. command: custom
  103. custom: tool
  104. arguments: install --tool-path . SignClient
  105. displayName: Install SignTool tool
  106. - pwsh: |
  107. .\SignClient "Sign" `
  108. --baseDirectory "$(Pipeline.Workspace)\BuildPackages" `
  109. --input "**/*.nupkg" `
  110. --config "$(Pipeline.Workspace)\config\signclient.json" `
  111. --user "$(SignClientUser)" `
  112. --secret "$(SignClientSecret)" `
  113. --name "Ix.NET" `
  114. --description "Ix.NET" `
  115. --descriptionUrl "https://github.com/dotnet/reactive"
  116. displayName: Sign packages
  117. - publish: $(Pipeline.Workspace)/BuildPackages
  118. displayName: Publish Signed Packages
  119. artifact: SignedPackages