Skip to content

Commit

Permalink
Add AsyncRx.NET build pipeline (#1888)
Browse files Browse the repository at this point in the history
  • Loading branch information
idg10 committed Mar 13, 2023
1 parent 88001b1 commit 47d0f79
Show file tree
Hide file tree
Showing 6 changed files with 149 additions and 1 deletion.
4 changes: 4 additions & 0 deletions AsyncRx.NET/ApiCompare/ApiCompare.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>

<!-- You wouldn't think we'd need this with an Exe, but it seems this is getting published as a package without this! -->
<IsPackable>false</IsPackable>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>

<ItemGroup>
Expand Down
1 change: 0 additions & 1 deletion AsyncRx.NET/Directory.build.props
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
<DefaultLanguage>en-US</DefaultLanguage>
<IncludeSymbols>false</IncludeSymbols>
<IsTestProject>$(MSBuildProjectName.Contains('Tests'))</IsTestProject>
<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)Rx.ruleset</CodeAnalysisRuleSet>
<GeneratePackageOnBuild Condition=" '$(IsTestProject)' != 'true' and '$(CreatePackage)' == 'true' ">true</GeneratePackageOnBuild>
<PackageOutputPath>$(MSBuildThisFileDirectory)artifacts</PackageOutputPath>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
Expand Down
4 changes: 4 additions & 0 deletions AsyncRx.NET/Playground/Playground.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>

<!-- You wouldn't think we'd need this with an Exe, but it seems this is getting published as a package without this! -->
<IsPackable>false</IsPackable>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
Expand Down
13 changes: 13 additions & 0 deletions AsyncRx.NET/build/signclient.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"SignClient": {
"AzureAd": {
"AADInstance": "https://login.microsoftonline.com/",
"ClientId": "c248d68a-ba6f-4aa9-8a68-71fe872063f8",
"TenantId": "16076fdc-fcc1-4a15-b1ca-32c9a255900e"
},
"Service": {
"Url": "https://codesign.dotnetfoundation.org/",
"ResourceId": "https://SignService/3c30251f-36f3-490b-a955-520addb85001"
}
}
}
11 changes: 11 additions & 0 deletions AsyncRx.NET/version.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"version": "6.0.0-alpha.{height}",
"publicReleaseRefSpec": [
"^refs/heads/main$", // we release out of main
"^refs/heads/rel/v\\d+\\.\\d+", // we also release branches starting with rel/vN.N
"^refs/heads/rel/rx-v\\d+\\.\\d+" // we also release branches starting with rel/vN.N
],
"nugetPackageVersion":{
"semVer": 2
}
}
117 changes: 117 additions & 0 deletions azure-pipelines.asyncrx.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
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: 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

0 comments on commit 47d0f79

Please sign in to comment.