Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add AsyncRx.NET build pipeline #1888

Merged
merged 5 commits into from
Mar 13, 2023
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 3 additions & 0 deletions AsyncRx.NET/ApiCompare/ApiCompare.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
idg10 marked this conversation as resolved.
Show resolved Hide resolved

<!-- 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>
</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
3 changes: 3 additions & 0 deletions AsyncRx.NET/Playground/Playground.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
idg10 marked this conversation as resolved.
Show resolved Hide resolved

<!-- 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>
</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