trigger: branches: include: - main - rel/* paths: include: - AsyncRx.NET/* - .editorconfig - azure-pipelines.asyncrx.yml pr: branches: include: - main - rel/* paths: include: - AsyncRx.NET/* - .editorconfig - azure-pipelines.asyncrx.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 Core 7.0.x SDK inputs: version: 7.0.x performMultiLevelLookup: true - task: DotNetCoreCLI@2 inputs: command: custom custom: tool arguments: install --tool-path . nbgv displayName: Install NBGV tool - script: nbgv cloud -a -p AsyncRx.NET displayName: Set Version - task: MSBuild@1 displayName: Build AsyncRx.NET.sln inputs: solution: AsyncRx.NET/AsyncRx.NET.sln msbuildArguments: /restore /t:build /p:CreatePackage=true /p:NoPackageAnalysis=true /p:PackageOutputPath=$(Build.ArtifactStagingDirectory)\artifacts configuration: $(BuildConfiguration) maximumCpuCount: false - task: DotNetCoreCLI@2 inputs: command: custom custom: tool arguments: install --tool-path . dotnet-reportgenerator-globaltool displayName: Install ReportGenerator tool # Normally we'd run tests here, but AsyncRx.NET doesn't have any yet! # Once we're ready to stablize, we'd also add API surface area tests too - publish: AsyncRx.NET/build artifact: config displayName: Publish signing config - publish: $(Build.ArtifactStagingDirectory)\artifacts displayName: Publish artifacts artifact: BuildPackages # Rx.NET has an IntegrationTests stage. Consider this once we have tests - stage: CodeSign # In Rx, the condition includes: # succeeded('IntegrationTests') condition: 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: UseDotNet@2 displayName: Use .NET 8.0.x SDK inputs: version: 8.0.x performMultiLevelLookup: true - task: DotNetCoreCLI@2 displayName: Install SignTool tool inputs: command: custom custom: tool arguments: install --tool-path . sign --version 0.9.1-beta.24406.1 - task: AzureCLI@2 inputs: azureSubscription: 'Rx.NET Sign Service Connection' scriptType: pscore scriptLocation: inlineScript inlineScript: | .\sign code azure-key-vault ` "**/*.nupkg" ` --base-directory "$(Pipeline.Workspace)\BuildPackages" ` --publisher-name "Reactive Extensions for .NET (.NET Foundation)" ` --description "AsyncRx.NET" ` --description-url "https://github.com/dotnet/reactive" ` --azure-key-vault-url "$(SignKeyVaultUrl)" ` --azure-key-vault-certificate "$(SignKeyVaultCertificateName)" displayName: Sign packages - publish: $(Pipeline.Workspace)/BuildPackages displayName: Publish Signed Packages artifact: SignedPackages