parameters: # Agent OS identifier and used as job name agentOs: '' # Agent pool pool: {} # Additional variables variables: {} # Build strategy - matrix strategy: {} # Job timeout timeoutInMinutes: 180 # Publish using pipelines enablePublishUsingPipelines: true phases: - template: /eng/common/templates/job/job.yml parameters: name: ${{ parameters.agentOs }} timeoutInMinutes: ${{ parameters.timeoutInMinutes }} ${{ if eq(parameters.agentOs, 'Windows_NT') }}: enableMicrobuild: true enablePublishBuildArtifacts: true enablePublishBuildAssets: true enablePublishTestResults: true enablePublishUsingPipelines: ${{parameters.enablePublishUsingPipelines}} enableTelemetry: true helixRepo: dotnet/core-sdk pool: ${{ parameters.pool }} ${{ if ne(parameters.strategy, '') }}: strategy: ${{ parameters.strategy }} workspace: clean: all variables: - _AgentOSName: ${{ parameters.agentOs }} - _TeamName: Roslyn-Project-System - _BuildArgs: '' - _SignType: test - _DOTNETCLIMSRC_READ_SAS_TOKEN: '' - ${{ if and(eq(variables['System.TeamProject'], 'internal'), contains(variables['Build.SourceBranch'], 'internal')) }}: - group: DotNet-MSRC-Storage - _DOTNETCLIMSRC_READ_SAS_TOKEN: $(dotnetclimsrc-read-sas-token) - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - group: DotNet-Symbol-Server-PATs - group: DotNet-HelixApi-Access - group: DotNet-Blob-Feed - _DotNetPublishToBlobFeed: true - _PushToVSFeed: true - _SignType: real - _BuildArgs: /p:OfficialBuildId=$(BUILD.BUILDNUMBER) /p:DotNetPublishToBlobFeed=$(_DotNetPublishToBlobFeed) /p:DotNetPublishBlobFeedKey=$(dotnetfeed-storage-access-key-1) /p:DotNetPublishBlobFeedUrl=$(PB_PublishBlobFeedUrl) /p:DotnetPublishSdkAssetsBlobFeedUrl=$(_PublishBlobFeedUrl) /p:DotNetSymbolServerTokenMsdl=$(microsoft-symbol-server-pat) /p:DotNetSymbolServerTokenSymWeb=$(symweb-symbol-server-pat) /p:PB_PublishType=blob /p:DotnetPublishChecksumsBlobFeedUrl=$(_PublishChecksumsBlobFeedUrl) /p:DotNetSignType=real /p:TeamName=$(_TeamName) /p:DotNetPublishUsingPipelines=$(_PublishUsingPipelines) steps: - checkout: self clean: true - ${{ if eq(parameters.agentOs, 'Windows_NT') }}: - script: 'eng\setbuildinfo.bat $(_BuildArchitecture) $(_BuildConfig)' displayName: Set test info (Windows) - script: build.cmd $(TestParameter) -pack -publish -ci -Configuration $(_BuildConfig) -Architecture $(_BuildArchitecture) $(_BuildArgs) $(SignBuildParameters) $(_AdditionalBuildParameters) displayName: Build env: DOTNET_CLI_UI_LANGUAGE: $(_DOTNET_CLI_UI_LANGUAGE) DropSuffix: $(_DropSuffix) DOTNETCLIMSRC_READ_SAS_TOKEN: $(_DOTNETCLIMSRC_READ_SAS_TOKEN) - ${{ if ne(parameters.agentOs, 'Windows_NT') }}: - script: 'eng/setbuildinfo.sh $(_BuildArchitecture) $(_BuildConfig)' displayName: Set test info (Non-Windows) - ${{ if eq(parameters.agentOs, 'Linux') }}: - script: ./build.sh $(TestParameter) --pack --publish --ci --noprettyprint --configuration $(_BuildConfig) $(_DockerParameter) --architecture $(_BuildArchitecture) $(_LinuxPortable) $(_RuntimeIdentifier) $(_BuildArgs) $(_AdditionalBuildParameters) displayName: Build env: DropSuffix: $(_DropSuffix) DOTNETCLIMSRC_READ_SAS_TOKEN: $(_DOTNETCLIMSRC_READ_SAS_TOKEN) - ${{ if or(eq(parameters.agentOs, 'Darwin'), eq(parameters.agentOs, 'FreeBSD')) }}: - script: ./build.sh $(TestParameter) --pack --publish --ci --noprettyprint --configuration $(_BuildConfig) $(_BuildArgs) $(_AdditionalBuildParameters) displayName: Build env: DOTNETCLIMSRC_READ_SAS_TOKEN: $(_DOTNETCLIMSRC_READ_SAS_TOKEN) - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.agentOs, 'Windows_NT')) }}: - task: NuGetCommand@2 displayName: Push Visual Studio NuPkgs inputs: command: push packagesToPush: '$(Build.SourcesDirectory)/artifacts/packages/$(_BuildConfig)/NonShipping/VS.*.nupkg' nuGetFeedType: external publishFeedCredentials: 'DevDiv - VS package feed' condition: and(succeeded(), eq(variables['_PushToVSFeed'], 'true'), eq(variables['_DotNetPublishToBlobFeed'], 'true'), or(eq(variables['_BuildArchitecture'], 'x64'), eq(variables['_BuildArchitecture'], 'x86'))) - task: PublishTestResults@1 displayName: Publish Test Results inputs: testRunner: XUnit testResultsFiles: 'artifacts/TestResults/$(_BuildConfig)/*.xml' testRunTitle: '$(_AgentOSName)_$(Agent.JobName)' platform: '$(BuildPlatform)' configuration: '$(_BuildConfig)' condition: ne(variables['TestParameter'], '') - task: CopyFiles@2 displayName: Gather Logs inputs: SourceFolder: '$(Build.SourcesDirectory)/artifacts' Contents: | log/$(_BuildConfig)/**/* TestResults/$(_BuildConfig)/**/* TargetFolder: '$(Build.ArtifactStagingDirectory)' continueOnError: true condition: always() - task: PublishBuildArtifacts@1 displayName: Publish Logs to VSTS inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)' ArtifactName: '$(_AgentOSName)_$(Agent.JobName)_$(Build.BuildNumber)' publishLocation: Container continueOnError: true condition: always()