diff --git a/AsyncRx.NET/ApiCompare/ApiCompare.csproj b/AsyncRx.NET/ApiCompare/ApiCompare.csproj index 994ccbbefd..79e6e94db8 100644 --- a/AsyncRx.NET/ApiCompare/ApiCompare.csproj +++ b/AsyncRx.NET/ApiCompare/ApiCompare.csproj @@ -3,6 +3,10 @@ Exe netcoreapp3.1 + + + false + net6.0 diff --git a/AsyncRx.NET/Directory.build.props b/AsyncRx.NET/Directory.build.props index 966494a6e9..d7701965fb 100644 --- a/AsyncRx.NET/Directory.build.props +++ b/AsyncRx.NET/Directory.build.props @@ -14,7 +14,6 @@ en-US false $(MSBuildProjectName.Contains('Tests')) - $(MSBuildThisFileDirectory)Rx.ruleset true $(MSBuildThisFileDirectory)artifacts true diff --git a/AsyncRx.NET/Playground/Playground.csproj b/AsyncRx.NET/Playground/Playground.csproj index d2a41a42cd..15d9f54aff 100644 --- a/AsyncRx.NET/Playground/Playground.csproj +++ b/AsyncRx.NET/Playground/Playground.csproj @@ -3,6 +3,10 @@ Exe netcoreapp3.1 + + + false + net6.0 diff --git a/AsyncRx.NET/build/signclient.json b/AsyncRx.NET/build/signclient.json new file mode 100644 index 0000000000..3276a45de5 --- /dev/null +++ b/AsyncRx.NET/build/signclient.json @@ -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" + } + } +} \ No newline at end of file diff --git a/AsyncRx.NET/version.json b/AsyncRx.NET/version.json new file mode 100644 index 0000000000..193632c5e6 --- /dev/null +++ b/AsyncRx.NET/version.json @@ -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 + } +} diff --git a/azure-pipelines.asyncrx.yml b/azure-pipelines.asyncrx.yml new file mode 100644 index 0000000000..6d53f38560 --- /dev/null +++ b/azure-pipelines.asyncrx.yml @@ -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