azure-pipelines.ix.yml 3.7 KB

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