resources: - repo: self clean: true variables: SignType: real SkipTests: false SkipApplyOptimizationData: false jobs: - job: OfficialBuild displayName: Official Build pool: name: VSEng-MicroBuildVS2017 demands: - msbuild - visualstudio - DotNetFramework timeoutInMinutes: 360 variables: VisualStudio.MajorVersion: 16 VisualStudio.ChannelName: 'int.d16.0stg' VisualStudio.DropName: Products/$(System.TeamProject)/$(Build.Repository.Name)/$(Build.SourceBranchName)/$(Build.BuildNumber) steps: - task: NuGetToolInstaller@0 inputs: versionSpec: '4.9.2' - task: NuGetCommand@2 displayName: 'Clear NuGet caches' inputs: command: custom arguments: 'locals all -clear' - task: NuGetCommand@2 displayName: Restore internal tools inputs: command: restore feedsToUse: config restoreSolution: 'eng\internal\Toolset.csproj' nugetConfigPath: 'NuGet.config' restoreDirectory: '$(UserProfile)\.nuget\packages' - task: ms-vseng.MicroBuildTasks.30666190-6959-11e5-9f96-f56098202fef.MicroBuildSigningPlugin@1 inputs: signType: $(SignType) zipSources: false condition: and(succeeded(), in(variables['SignType'], 'test', 'real')) - task: ms-vseng.MicroBuildTasks.965C8DC6-1483-45C9-B384-5AC75DA1F1A4.MicroBuildOptProfPlugin@1 inputs: skipRunOptimize: true displayName: 'Install OptProf Plugin' # Required by MicroBuildBuildVSBootstrapper - task: ms-vseng.MicroBuildTasks.32f78468-e895-4f47-962c-58a699361df8.MicroBuildSwixPlugin@1 inputs: dropName: $(VisualStudio.DropName) feedSource: 'https://devdiv-test.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json' - script: eng\cibuild.cmd -configuration $(BuildConfiguration) -officialBuildId $(Build.BuildNumber) -officialSkipTests $(SkipTests) -officialSkipApplyOptimizationData $(SkipApplyOptimizationData) -vsDropName $(VisualStudio.DropName) -vsDropAccessToken $(System.AccessToken) /p:DotNetSignType=$(SignType) /p:DotNetPublishToBlobFeed=true /p:DotNetPublishBlobFeedKey=$(dotnetfeed-storage-access-key-1) /p:DotNetPublishBlobFeedUrl=https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json /p:PublishToSymbolServer=true /p:DotNetSymbolServerTokenMsdl=$(microsoft-symbol-server-pat) /p:DotNetSymbolServerTokenSymWeb=$(symweb-symbol-server-pat) displayName: Build condition: succeeded() - task: PowerShell@2 displayName: Publish Assets inputs: filePath: 'eng\publish-assets.ps1' arguments: '-configuration $(BuildConfiguration) -branchName "$(Build.SourceBranch)" -mygetApiKey $(Roslyn.MyGetApiKey) -nugetApiKey $(Roslyn.NuGetApiKey) -gitHubUserName $(Roslyn.GitHubUserName) -gitHubToken $(Roslyn.GitHubToken) -gitHubEmail $(Roslyn.GitHubEmail)' condition: succeeded() # Publish OptProf configuration files - task: ms-vscs-artifact.build-tasks.artifactDropTask-1.artifactDropTask@0 inputs: dropServiceURI: 'https://devdiv.artifacts.visualstudio.com' buildNumber: 'ProfilingInputs/DevDiv/$(Build.Repository.Name)/$(Build.SourceBranchName)/$(Build.BuildNumber)' sourcePath: '$(Build.SourcesDirectory)\artifacts\OptProf\$(BuildConfiguration)\Data' toLowerCase: false usePat: false displayName: 'OptProf - Publish to Artifact Services - ProfilingInputs' condition: succeeded() # Build VS bootstrapper # Generates $(Build.StagingDirectory)\MicroBuild\Output\BootstrapperInfo.json - task: ms-vseng.MicroBuildTasks.0e9d0d4d-71ec-4e4e-ae40-db9896f1ae74.MicroBuildBuildVSBootstrapper@2 inputs: vsMajorVersion: $(VisualStudio.MajorVersion) channelName: $(VisualStudio.ChannelName) manifests: $(VisualStudio.SetupManifestList) outputFolder: '$(Build.SourcesDirectory)\artifacts\VSSetup\$(BuildConfiguration)\Insertion' displayName: 'OptProf - Build VS bootstrapper' condition: succeeded() # Publish run settings - task: PowerShell@2 inputs: filePath: eng\generate-optprof-run-settings.ps1 arguments: -configuration $(BuildConfiguration) -vsDropName $(VisualStudio.DropName) -bootstrapperInfo $(Build.StagingDirectory)\MicroBuild\Output\BootstrapperInfo.json failOnStderr: true displayName: 'OptProf - Generate runsettings file' condition: succeeded() # Publish bootstrapper info - task: PublishBuildArtifacts@1 inputs: PathtoPublish: $(Build.StagingDirectory)\MicroBuild\Output ArtifactName: MicroBuildOutputs ArtifactType: Container displayName: 'OptProf - Publish Artifact: MicroBuildOutputs' condition: succeeded() - task: PublishBuildArtifacts@1 displayName: Publish Logs inputs: PathtoPublish: '$(Build.SourcesDirectory)\artifacts\log\$(BuildConfiguration)' ArtifactName: 'Build Diagnostic Files' publishLocation: Container continueOnError: true condition: succeededOrFailed() - task: PublishTestResults@1 displayName: Publish Test Results inputs: testRunner: XUnit testResultsFiles: '$(Build.SourcesDirectory)\artifacts\TestResults\$(BuildConfiguration)\*.xml' mergeTestResults: true testRunTitle: 'Unit Tests' condition: and(succeededOrFailed(), ne(variables['SkipTests'], 'true')) # 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: $(VisualStudio.DropName) DropFolder: 'artifacts\VSSetup\$(BuildConfiguration)\Insertion' condition: succeeded() # Publish insertion packages to CoreXT store. - task: NuGetCommand@2 displayName: Publish CoreXT Packages inputs: command: push feedsToUse: config packagesToPush: '$(Build.SourcesDirectory)\artifacts\VSSetup\$(BuildConfiguration)\DevDivPackages\**\*.nupkg' publishVstsFeed: '97a41293-2972-4f48-8c0e-05493ae82010' allowPackageConflicts: true 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() # Archive NuGet packages to DevOps. - task: PublishBuildArtifacts@1 displayName: Publish Artifact Packages inputs: PathtoPublish: 'artifacts\packages\$(BuildConfiguration)' ArtifactName: 'Packages' 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() # Tag the build at the very end when we know it's been successful. - task: colinsalmcorner.colinsalmcorner-buildtasks.tag-build-task.tagBuildOrRelease@0 displayName: Tag build as ready for optimization training inputs: tags: 'ready-for-training' condition: succeeded() - task: ms-vseng.MicroBuildTasks.521a94ea-9e68-468a-8167-6dcf361ea776.MicroBuildCleanup@1 displayName: Perform Cleanup Tasks condition: succeededOrFailed() # Publish to Build Asset Registry - template: /eng/common/templates/job/publish-build-assets.yml parameters: dependsOn: - OfficialBuild queue: name: Hosted VS2017