123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288 |
- trigger:
- branches:
- include:
- - main
- - rel/*
- paths:
- include:
- - Rx.NET/Source/*
- - .editorconfig
- - azure-pipelines.rx.yml
- pr:
- branches:
- include:
- - main
- - rel/*
- paths:
- include:
- - Rx.NET/Source/*
- - .editorconfig
- - azure-pipelines.rx.yml
- stages:
- - stage: Build
- jobs:
- - job: Build
- pool:
- vmImage: windows-latest
- variables:
- BuildConfiguration: Release
- BuildPlatform: Any CPU
- DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
- steps:
- - task: UseDotNet@2
- displayName: Use .NET 8.0.x SDK
- inputs:
- version: 8.0.x
- performMultiLevelLookup: true
- # We need .NET 7.0 and 6.0 to be able to run all tests.
- # For .NET 7.0, the runtime package is sufficient because we don't need to build anything.
- # That doesn't work for 6.0, because we need the desktop framework, and the only way to
- # get that into a build agent seems to be to install the SDK.
- - task: UseDotNet@2
- displayName: Use .NET 7.0 runtime
- inputs:
- version: '7.0.x'
- packageType: runtime
- - task: UseDotNet@2
- displayName: Use .NET 6.0 SDK
- inputs:
- version: '6.0.x'
- - task: DotNetCoreCLI@2
- inputs:
- command: custom
- custom: tool
- arguments: install --tool-path . nbgv
- displayName: Install NBGV tool
- - script: nbgv cloud -a -p Rx.NET/Source
- displayName: Set Version
- - task: MSBuild@1
- displayName: Build System.Reactive.sln
- inputs:
- solution: Rx.NET/Source/System.Reactive.sln
- msbuildArguments: /restore /t:build /p:CreatePackage=true /p:NoPackageAnalysis=true /p:PackageOutputPath=$(Build.ArtifactStagingDirectory)\artifacts
- configuration: $(BuildConfiguration)
- maximumCpuCount: false
- - task: NuGetCommand@2
- displayName: Pack compatibility package
- inputs:
- command: custom
- arguments: pack Rx.NET/Source/facades/System.Reactive.Compatibility.nuspec -Version $(NBGV_NuGetPackageVersion) -MinClientVersion 2.12 -NoPackageAnalysis -outputdirectory $(Build.ArtifactStagingDirectory)\artifacts
- - task: DotNetCoreCLI@2
- inputs:
- command: custom
- custom: tool
- arguments: install --tool-path . dotnet-reportgenerator-globaltool
- displayName: Install ReportGenerator tool
- - task: DotNetCoreCLI@2
- inputs:
- command: test
- projects: Rx.NET/Source/tests/Tests.System.Reactive/*.csproj
- arguments: -c $(BuildConfiguration) --filter "TestCategory!=SkipCI" --settings Rx.NET/Source/CodeCoverage.runsettings --collect:"XPlat Code Coverage" -- RunConfiguration.DisableAppDomain=true
- displayName: Run Unit Tests
- - task: DotNetCoreCLI@2
- inputs:
- command: test
- projects: Rx.NET/Source/tests/Tests.System.Reactive.ApiApprovals/Tests.System.Reactive.ApiApprovals.csproj
- arguments: -c $(BuildConfiguration)
- displayName: Run Api Approvals Tests
- - script: reportgenerator -reports:$(Agent.TempDirectory)/**/coverage.cobertura.xml -targetdir:$(Build.SourcesDirectory)/Rx.NET/Source/coverlet/reports -reporttypes:"Cobertura"
- displayName: Create reports
- - task: PublishCodeCoverageResults@1
- displayName: 'Publish code coverage'
- inputs:
- codeCoverageTool: Cobertura
- summaryFileLocation: $(Build.SourcesDirectory)/Rx.NET/Source/coverlet/reports/Cobertura.xml
- - publish: Rx.NET/Source/build
- artifact: config
- displayName: Publish signing config
- - publish: $(Build.ArtifactStagingDirectory)\artifacts
- displayName: Publish artifacts
- artifact: BuildPackages
-
- - publish: Rx.NET/Source/tests/Tests.System.Reactive.ApiApprovals/Api
- displayName: Publish test artifiacts
- artifact: ApprovalsTests
- condition: always()
- - stage: IntegrationTests
- jobs:
- - job: Linux
- pool:
- vmImage: ubuntu-latest
- variables:
- BuildConfiguration: Release
- BuildPlatform: Any CPU
- DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
- steps:
- - task: UseDotNet@2
- inputs:
- version: 8.0.x
- - task: UseDotNet@2
- displayName: Use .NET 7.0 SDK
- inputs:
- version: '7.0.x'
- packageType: runtime
- - task: UseDotNet@2
- displayName: Use .NET 6.0 SDK
- inputs:
- version: '6.0.x'
- packageType: runtime
- - task: DotNetCoreCLI@2
- inputs:
- command: custom
- custom: tool
- arguments: install --tool-path . nbgv
- displayName: Install NBGV tool
- - script: ./nbgv cloud -a -p Rx.NET/Source
- displayName: Set Version
- - task: DownloadPipelineArtifact@2
- displayName: Download Build Artifacts
- inputs:
- artifactName: BuildPackages
- targetPath: $(System.DefaultWorkingDirectory)/Rx.NET/Integration/LocalPackages
- - task: DotNetCoreCLI@2
- displayName: Update Rx
- inputs:
- command: custom
- projects: $(System.DefaultWorkingDirectory)/Rx.NET/Integration/LinuxTests/LinuxTests.csproj
- custom: restore
- arguments: --configfile $(System.DefaultWorkingDirectory)/Rx.NET/Integration/NuGet.Config
- - task: DotNetCoreCLI@2
- inputs:
- command: test
- projects: $(System.DefaultWorkingDirectory)/Rx.NET/Integration/LinuxTests/LinuxTests.csproj
- arguments: -c $(BuildConfiguration) -f net8.0 --filter "TestCategory!=SkipCI"
- displayName: Run 8.0 Tests on Linux
- - task: DotNetCoreCLI@2
- inputs:
- command: test
- projects: $(System.DefaultWorkingDirectory)/Rx.NET/Integration/LinuxTests/LinuxTests.csproj
- arguments: -c $(BuildConfiguration) -f net7.0 --filter "TestCategory!=SkipCI"
- displayName: Run 7.0 Tests on Linux
- - task: DotNetCoreCLI@2
- inputs:
- command: test
- projects: $(System.DefaultWorkingDirectory)/Rx.NET/Integration/LinuxTests/LinuxTests.csproj
- arguments: -c $(BuildConfiguration) -f net6.0 --filter "TestCategory!=SkipCI"
- displayName: Run 6.0 Tests on Linux
- - job: WindowsDesktop
- pool:
- vmImage: windows-latest
- variables:
- BuildConfiguration: Release
- BuildPlatform: Any CPU
- DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
- steps:
- - task: UseDotNet@2
- inputs:
- version: 8.0.x
- performMultiLevelLookup: true
- - task: UseDotNet@2
- displayName: Use .NET 7.0 SDK
- inputs:
- version: '7.0.x'
- - task: UseDotNet@2
- displayName: Use .NET 6.0 SDK
- inputs:
- version: '6.0.x'
- - task: DotNetCoreCLI@2
- inputs:
- command: custom
- custom: tool
- arguments: install --tool-path . nbgv
- displayName: Install NBGV tool
- - script: nbgv cloud -a -p Rx.NET/Source
- displayName: Set Version
- - task: DownloadPipelineArtifact@2
- displayName: Download Build Artifacts
- inputs:
- artifactName: BuildPackages
- targetPath: $(System.DefaultWorkingDirectory)/Rx.NET/Integration/LocalPackages
- - task: DotNetCoreCLI@2
- displayName: Update Rx
- inputs:
- command: custom
- projects: $(System.DefaultWorkingDirectory)/Rx.NET/Integration/WindowsDesktopTests/WindowsDesktopTests.csproj
- custom: restore
- arguments: --configfile $(System.DefaultWorkingDirectory)/Rx.NET/Integration/NuGet.Config
- - task: DotNetCoreCLI@2
- inputs:
- command: test
- projects: $(System.DefaultWorkingDirectory)/Rx.NET/Integration/WindowsDesktopTests/WindowsDesktopTests.csproj
- arguments: -c $(BuildConfiguration) --filter "TestCategory!=SkipCI"
- displayName: Run Tests on Window Desktop
- - stage: CodeSign
- condition: and(succeeded('IntegrationTests'), not(eq(variables['build.reason'], 'PullRequest')))
- jobs:
- - deployment: CodeSign
- displayName: Code Signing
- pool:
- vmImage: windows-latest
- environment: Code Sign
- variables:
- - group: SignClient Credentials
- strategy:
- runOnce:
- deploy:
- steps:
- - task: DotNetCoreCLI@2
- inputs:
- command: custom
- custom: tool
- arguments: install --tool-path . SignClient
- displayName: Install SignTool tool
- - pwsh: |
- .\SignClient "Sign" `
- --baseDirectory "$(Pipeline.Workspace)\BuildPackages" `
- --input "**/*.nupkg" `
- --config "$(Pipeline.Workspace)\config\signclient.json" `
- --user "$(SignClientUser)" `
- --secret "$(SignClientSecret)" `
- --name "Rx.NET" `
- --description "Rx.NET" `
- --descriptionUrl "https://github.com/dotnet/reactive"
- displayName: Sign packages
- - publish: $(Pipeline.Workspace)/BuildPackages
- displayName: Publish Signed Packages
- artifact: SignedPackages
|