azure-pipelines.ix.yml 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. trigger:
  2. branches:
  3. include:
  4. - master
  5. - rel/*
  6. paths:
  7. include:
  8. - Ix.NET/Source/*
  9. - .editorconfig
  10. - azure-pipelines.ix.yml
  11. pr:
  12. branches:
  13. include:
  14. - master
  15. - rel/*
  16. paths:
  17. include:
  18. - Ix.NET/Source/*
  19. - .editorconfig
  20. - azure-pipelines.ix.yml
  21. pool:
  22. vmImage: windows-2019
  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 3.1.x SDK
  33. inputs:
  34. version: 3.1.x
  35. performMultiLevelLookup: 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" /t:rebuild /p:ContinuousIntegrationBuild=false -- 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. - task: PublishPipelineArtifact@0
  83. displayName: Publish Code Coverage XML
  84. inputs:
  85. artifactName: Coverage Report XML
  86. targetPath: $(Build.SourcesDirectory)/Ix.NET/Source/coverlet/reports/Cobertura.xml
  87. - stage: CodeSign
  88. condition: and(succeeded('Build'), not(eq(variables['build.reason'], 'PullRequest')))
  89. jobs:
  90. - deployment: CodeSign
  91. displayName: Code Signing
  92. pool:
  93. vmImage: windows-latest
  94. environment: Code Sign
  95. variables:
  96. - group: SignClient Credentials
  97. strategy:
  98. runOnce:
  99. deploy:
  100. steps:
  101. - task: DotNetCoreCLI@2
  102. inputs:
  103. command: custom
  104. custom: tool
  105. arguments: install --tool-path . SignClient
  106. displayName: Install SignTool tool
  107. - pwsh: |
  108. .\SignClient "Sign" `
  109. --baseDirectory "$(Pipeline.Workspace)\BuildPackages" `
  110. --input "**/*.nupkg" `
  111. --config "$(Pipeline.Workspace)\config\signclient.json" `
  112. --user "$(SignClientUser)" `
  113. --secret "$(SignClientSecret)" `
  114. --name "Ix.NET" `
  115. --description "Ix.NET" `
  116. --descriptionUrl "https://github.com/dotnet/reactive"
  117. displayName: Sign packages
  118. - publish: $(Pipeline.Workspace)/BuildPackages
  119. displayName: Publish Signed Packages
  120. artifact: SignedPackages