diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 46f3f13d6..250d2fda6 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -1,93 +1,128 @@ resources: - repo: self - clean: true - -queue: - name: VSEng-MicroBuildVS2017 - demands: Cmd + clean: true +# The variables `_DotNetArtifactsCategory` and `_DotNetValidationArtifactsCategory` are required for proper publishing of build artifacts. See https://github.com/dotnet/roslyn/pull/38259 variables: - BuildConfiguration: Release - BuildPlatform: any cpu - TeamName: Roslyn-SDK - SignType: real - DropRoot: \\cpvsbuild\drops\Roslyn - VisualStudioDropName: Products/$(System.TeamProject)/$(Build.Repository.Name)/$(Build.SourceBranchName)/$(Build.BuildNumber) + - name: _DotNetArtifactsCategory + value: .NETCore + - name: _DotNetValidationArtifactsCategory + value: .NETCoreValidation # Branches that trigger a build on commit trigger: - master -steps: -- task: ms-vseng.MicroBuildTasks.30666190-6959-11e5-9f96-f56098202fef.MicroBuildSigningPlugin@1 - displayName: Install Signing Plugin - inputs: - signType: $(SignType) - esrpSigning: true - condition: and(succeeded(), ne(variables['SignType'], '')) - -- task: ms-vseng.MicroBuildTasks.32f78468-e895-4f47-962c-58a699361df8.MicroBuildSwixPlugin@1 - displayName: Install Swix Plugin - -- script: eng\common\CIBuild.cmd - -configuration $(BuildConfiguration) - /p:OfficialBuildId=$(Build.BuildNumber) - /p:VisualStudioDropName=$(VisualStudioDropName) - /p:DotNetSignType=$(SignType) - /p:DotNetSymbolServerTokenMsdl=$(microsoft-symbol-server-pat) - /p:DotNetSymbolServerTokenSymWeb=$(symweb-symbol-server-pat) - displayName: Build +stages: +- stage: build + displayName: Build and Test -- task: NuGetPublisher@0 - displayName: Publish NuGet Packages to MyGet - inputs: - searchPattern: 'artifacts\packages\$(BuildConfiguration)\Shipping\*.nupkg' - connectedServiceName: 'RoslynSdk - NuGet feed' - nuGetVersion: 4.0.0.2283 - condition: succeeded() + jobs: + - job: OfficialBuild + displayName: Official Build + pool: + name: VSEng-MicroBuildVS2017 + demands: + - cmd -# Publishes setup VSIXes to a drop. -# Note: The insertion tool looks for the display name of this task in the logs. -- task: ms-vseng.MicroBuildTasks.4305a8de-ba66-4d8b-b2d1-0dc4ecbbf5e8.MicroBuildUploadVstsDropFolder@1 - displayName: Upload VSTS Drop - inputs: - DropName: $(VisualStudioDropName) - DropFolder: 'artifacts\VSSetup\$(BuildConfiguration)\Insertion' - condition: succeeded() - -- task: PublishBuildArtifacts@1 - displayName: Publish Logs - inputs: - PathtoPublish: '$(Build.SourcesDirectory)\artifacts\log\$(BuildConfiguration)' - ArtifactName: 'Logs' - continueOnError: true - condition: not(succeeded()) + steps: + - task: ms-vseng.MicroBuildTasks.30666190-6959-11e5-9f96-f56098202fef.MicroBuildSigningPlugin@1 + displayName: Install Signing Plugin + inputs: + signType: $(SignType) + esrpSigning: true + condition: and(succeeded(), ne(variables['SignType'], '')) + + - task: ms-vseng.MicroBuildTasks.32f78468-e895-4f47-962c-58a699361df8.MicroBuildSwixPlugin@1 + displayName: Install Swix Plugin + + - script: eng\common\CIBuild.cmd + -configuration $(BuildConfiguration) + /p:OfficialBuildId=$(Build.BuildNumber) + /p:VisualStudioDropName=$(VisualStudioDropName) + /p:DotNetSignType=$(SignType) + /p:DotNetSymbolServerTokenMsdl=$(microsoft-symbol-server-pat) + /p:DotNetSymbolServerTokenSymWeb=$(symweb-symbol-server-pat) + /p:DotNetArtifactsCategory=$(_DotNetArtifactsCategory) + /p:DotnetPublishUsingPipelines=true + displayName: Build -- task: PublishTestResults@1 - displayName: Publish Test Results - inputs: - testRunner: XUnit - testResultsFiles: 'artifacts/TestResults/$(BuildConfiguration)/*.xml' - mergeTestResults: true - testRunTitle: 'Unit Tests' - condition: always() + - task: PublishTestResults@1 + displayName: Publish Test Results + inputs: + testRunner: XUnit + testResultsFiles: 'artifacts/TestResults/$(BuildConfiguration)/*.xml' + mergeTestResults: true + testRunTitle: 'Unit Tests' + condition: always() -# Publish an artifact that the RoslynInsertionTool is able to find by its name. -- task: PublishBuildArtifacts@1 - displayName: Publish Artifact VSSetup - inputs: - PathtoPublish: 'artifacts\VSSetup\$(BuildConfiguration)' - ArtifactName: 'VSSetup' - condition: succeeded() + - task: NuGetPublisher@0 + displayName: Publish NuGet Packages to MyGet + inputs: + searchPattern: 'artifacts\packages\$(BuildConfiguration)\Shipping\*.nupkg' + connectedServiceName: 'RoslynSdk - NuGet feed' + nuGetVersion: 4.0.0.2283 + condition: succeeded() + + # Publishes setup VSIXes to a drop. + # Note: The insertion tool looks for the display name of this task in the logs. + - task: ms-vseng.MicroBuildTasks.4305a8de-ba66-4d8b-b2d1-0dc4ecbbf5e8.MicroBuildUploadVstsDropFolder@1 + displayName: Upload VSTS Drop + inputs: + DropName: $(VisualStudioDropName) + DropFolder: 'artifacts\VSSetup\$(BuildConfiguration)\Insertion' + condition: succeeded() + + - task: PublishBuildArtifacts@1 + displayName: Publish Logs + inputs: + PathtoPublish: '$(Build.SourcesDirectory)\artifacts\log\$(BuildConfiguration)' + ArtifactName: 'Logs' + continueOnError: true + condition: not(succeeded()) -# Archive NuGet packages to DevOps. -- task: PublishBuildArtifacts@1 - displayName: Publish Artifact Packages - inputs: - PathtoPublish: 'artifacts\packages\$(BuildConfiguration)' - ArtifactName: 'Packages' - condition: succeeded() + # Publish an artifact that the RoslynInsertionTool is able to find by its name. + - task: PublishBuildArtifacts@1 + displayName: Publish Artifact VSSetup + inputs: + PathtoPublish: 'artifacts\VSSetup\$(BuildConfiguration)' + ArtifactName: 'VSSetup' + condition: succeeded() + + # Publish our NuPkgs as an artifact. The name of this artifact must be PackageArtifacts as the + # arcade templates depend on the name. + - task: PublishBuildArtifacts@1 + displayName: Publish Artifact Packages + inputs: + PathtoPublish: 'artifacts\packages\$(BuildConfiguration)' + ArtifactName: 'PackageArtifacts' + condition: succeeded() + + # Publish Asset Manifests for Build Asset Registry job + - task: PublishBuildArtifacts@1 + displayName: Publish Asset Manifests + inputs: + PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/$(BuildConfiguration)/AssetManifest' + ArtifactName: AssetManifests + condition: succeeded() + + - task: ms-vseng.MicroBuildTasks.521a94ea-9e68-468a-8167-6dcf361ea776.MicroBuildCleanup@1 + displayName: Cleanup + condition: always() + + # Publish to Build Asset Registry + - template: /eng/common/templates/job/publish-build-assets.yml + parameters: + publishUsingPipelines: true + dependsOn: + - OfficialBuild + queue: + name: Hosted VS2017 -- task: ms-vseng.MicroBuildTasks.521a94ea-9e68-468a-8167-6dcf361ea776.MicroBuildCleanup@1 - displayName: Cleanup - condition: always() \ No newline at end of file +- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - template: eng\common\templates\post-build\post-build.yml + parameters: + # Symbol validation is not entirely reliable as of yet, so should be turned off until + # https://github.com/dotnet/arcade/issues/2871 is resolved. + enableSymbolValidation: false + enableSourceLinkValidation: false diff --git a/eng/Signing.props b/eng/Signing.props new file mode 100644 index 000000000..d55e11d7b --- /dev/null +++ b/eng/Signing.props @@ -0,0 +1,6 @@ + + + + + +