archType: ${{ parameters.archType }}
osGroup: ${{ parameters.osGroup }}
osSubgroup: ${{ parameters.osSubgroup }}
+ testGroup: ${{ parameters.testGroup }}
helixType: 'build/product/'
enableMicrobuild: true
stagedBuild: ${{ parameters.stagedBuild }}
# and FreeBSD builds use a build agent with dependencies
# preinstalled, so we only need this step for OSX and Windows.
- ${{ if eq(parameters.osGroup, 'OSX') }}:
- - script: sh eng/install-native-dependencies.sh $(osGroup)
+ - script: sh $(coreClrRepoRoot)/eng/install-native-dependencies.sh $(osGroup)
displayName: Install native dependencies
- ${{ if eq(parameters.osGroup, 'Windows_NT') }}:
# Necessary to install python
- - script: eng\common\init-tools-native.cmd -InstallDirectory $(Build.SourcesDirectory)\native-tools -Force
+ - script: $(Build.SourcesDirectory)\eng\common\init-tools-native.cmd -InstallDirectory $(Build.SourcesDirectory)\native-tools -Force
displayName: Install native dependencies
# Install internal tools on official builds
# Build
- ${{ if ne(parameters.osGroup, 'Windows_NT') }}:
- - script: $(coreClrRepoRoot)/build$(scriptExt) $(buildConfig) $(archType) $(crossArg) -ci -skipnuget $(clangArg) $(stripSymbolsArg) $(officialBuildIdArg)
+ - script: $(coreClrRepoRootDir)build$(scriptExt) $(buildConfig) $(archType) $(crossArg) -ci -skipnuget $(clangArg) $(stripSymbolsArg) $(officialBuildIdArg)
displayName: Build product
- ${{ if eq(parameters.osGroup, 'Windows_NT') }}:
- - script: set __TestIntermediateDir=int&&$(coreClrRepoRoot)\build$(scriptExt) $(buildConfig) $(archType) -ci -skiptests -skipbuildpackages $(officialBuildIdArg) $(ibcOptimizeArg) $(enforcePgoArg)
+ - script: set __TestIntermediateDir=int&&$(coreClrRepoRootDir)build$(scriptExt) $(buildConfig) $(archType) -ci -skiptests -skipbuildpackages $(officialBuildIdArg) $(ibcOptimizeArg) $(enforcePgoArg)
displayName: Build product
# Build native test components
- ${{ if ne(parameters.osGroup, 'Windows_NT') }}:
- - script: $(coreClrRepoRoot)/build-test$(scriptExt) skipmanaged $(buildConfig) $(archType) $(crossArg) $(priorityArg) $(clangArg)
+ - script: $(coreClrRepoRootDir)build-test$(scriptExt) skipmanaged $(buildConfig) $(archType) $(crossArg) $(priorityArg) $(clangArg)
displayName: Build native test components
- ${{ if eq(parameters.osGroup, 'Windows_NT') }}:
- - script: $(coreClrRepoRoot)\build-test$(scriptExt) skipmanaged $(buildConfig) $(archType) $(priorityArg)
+ - script: $(coreClrRepoRootDir)build-test$(scriptExt) skipmanaged $(buildConfig) $(archType) $(priorityArg)
displayName: Build native test components
# Sign on Windows
condition: always()
# Publish product output directory for consumption by tests.
- - template: /eng/upload-artifact-step.yml
+ - template: upload-artifact-step.yml
parameters:
rootFolder: $(buildProductRootFolderPath)
includeRootFolder: false
displayName: 'product build'
# Publish test native components for consumption by test execution.
- - template: /eng/upload-artifact-step.yml
+ - template: upload-artifact-step.yml
parameters:
rootFolder: $(testNativeRootFolderPath)
includeRootFolder: false
displayName: 'native test components'
# Publish test build root for consumption by test execution.
- - template: /eng/upload-artifact-step.yml
+ - template: upload-artifact-step.yml
parameters:
rootFolder: $(testBuildRootFolderPath)
includeRootFolder: false
# Build packages
- ${{ if ne(parameters.osGroup, 'Windows_NT') }}:
- - script: $(coreClrRepoRoot)/build-packages$(scriptExt) -BuildArch=$(archType) -BuildType=$(_BuildConfig) $(crossPackagesArg) $(officialBuildIdArg) $(portableBuildArg) -ci
+ - script: $(coreClrRepoRootDir)build-packages$(scriptExt) -BuildArch=$(archType) -BuildType=$(_BuildConfig) $(crossPackagesArg) $(officialBuildIdArg) $(portableBuildArg) -ci
displayName: Build packages
- ${{ if eq(parameters.osGroup, 'Windows_NT') }}:
- - script: $(coreClrRepoRoot)\build-packages$(scriptExt) -BuildArch=$(archType) -BuildType=$(_BuildConfig) $(officialBuildIdArg) -ci
+ - script: $(coreClrRepoRootDir)build-packages$(scriptExt) -BuildArch=$(archType) -BuildType=$(_BuildConfig) $(officialBuildIdArg) -ci
displayName: Build packages
# Publish official build
- ${{ if eq(parameters.publishToBlobFeed, 'true') }}:
- ${{ if ne(parameters.osGroup, 'Windows_NT') }}:
- - script: ./eng/common/build.sh --ci --restore --publish --configuration $(_BuildConfig) /p:DotNetPublishUsingPipelines=true /p:DotNetPublishToBlobFeed=true /p:DotNetPublishBlobFeedUrl=$(dotnetfeedUrl) /p:DotNetPublishBlobFeedKey=$(dotnetfeedPAT) /p:__BuildType=$(_BuildConfig) /p:__BuildArch=$(archType) /p:__BuildOS=$(osGroup) /p:OSIdentifier=$(osGroup)$(osSubgroup) /bl:"$(Build.SourcesDirectory)/bin/Logs/publish-pkgs.binlog" --projects $(Build.SourcesDirectory)/eng/empty.csproj
+ - script: $(Build.SourcesDirectory)/eng/common/build.sh --ci --restore --publish --configuration $(_BuildConfig) /p:DotNetPublishUsingPipelines=true /p:DotNetPublishToBlobFeed=true /p:DotNetPublishBlobFeedUrl=$(dotnetfeedUrl) /p:DotNetPublishBlobFeedKey=$(dotnetfeedPAT) /p:__BuildType=$(_BuildConfig) /p:__BuildArch=$(archType) /p:__BuildOS=$(osGroup) /p:OSIdentifier=$(osGroup)$(osSubgroup) /bl:"$(Build.SourcesDirectory)/bin/Logs/publish-pkgs.binlog" --projects $(Build.SourcesDirectory)/eng/empty.csproj
displayName: Publish packages to blob feed
env:
# TODO: remove NUGET_PACKAGES once https://github.com/dotnet/arcade/issues/1578 is fixed
- task: PublishBuildArtifacts@1
displayName: Publish Logs
inputs:
- pathtoPublish: $(Build.SourcesDirectory)/bin/Logs
- artifactName: ${{ format('BuildLogs_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
+ pathtoPublish: $(coreClrRepoRoot)/bin/Logs
+ artifactName: 'BuildLogs_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)'
continueOnError: true
condition: always()
# Install test build dependencies
- ${{ if eq(parameters.osGroup, 'OSX') }}:
- - script: sh eng/install-native-dependencies.sh $(osGroup)
+ - script: sh $(coreClrRepoRootDir)eng/install-native-dependencies.sh $(osGroup)
displayName: Install native dependencies
- ${{ if eq(parameters.osGroup, 'Windows_NT') }}:
# Necessary to install correct cmake version
- - script: eng\common\init-tools-native.cmd -InstallDirectory $(Build.SourcesDirectory)\native-tools -Force
+ - script: $(coreClrRepoRootDir)eng\common\init-tools-native.cmd -InstallDirectory $(Build.SourcesDirectory)\native-tools -Force
displayName: Install native dependencies
# Download product binaries directory
- - template: /eng/download-artifact-step.yml
+ - template: download-artifact-step.yml
parameters:
downloadFolder: $(binTestsPath)/tmp
unpackFolder: $(buildProductRootFolderPath)
# Build managed test components
- ${{ if ne(parameters.osGroup, 'Windows_NT') }}:
- - script: $(coreClrRepoRoot)/build-test$(scriptExt) skipnative skipgeneratelayout $(buildConfig) $(archType) $(crossArg) $(priorityArg) ci
+ - script: $(coreClrRepoRootDir)build-test$(scriptExt) skipnative skipgeneratelayout $(buildConfig) $(archType) $(crossArg) $(priorityArg) ci
displayName: Build managed test components
- ${{ if eq(parameters.osGroup, 'Windows_NT') }}:
- - script: $(coreClrRepoRoot)\build-test$(scriptExt) skipnative skipgeneratelayout $(buildConfig) $(archType) $(priorityArg) ci
+ - script: $(coreClrRepoRootDir)build-test$(scriptExt) skipnative skipgeneratelayout $(buildConfig) $(archType) $(priorityArg) ci
displayName: Build managed test components
# Zip and publish managed test components
- - template: /eng/upload-artifact-step.yml
+ - template: upload-artifact-step.yml
parameters:
rootFolder: $(testRootFolderPath)
includeRootFolder: false
# Publish .packages/microsoft.net.sdk.il needed for traversing
# test projects during the copynativeonly command in run test job.
- - template: /eng/upload-artifact-step.yml
+ - template: upload-artifact-step.yml
parameters:
rootFolder: $(microsoftNetSdkIlFolderPath)
includeRootFolder: false
- task: PublishBuildArtifacts@1
displayName: Publish Logs
inputs:
- pathtoPublish: $(Build.SourcesDirectory)/bin/Logs
- artifactName: ${{ format('TestBuildLogs_{0}{1}_{2}_{3}_{4}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, parameters.testGroup) }}
+ pathtoPublish: $(coreClrRepoRoot)/bin/Logs
+ artifactName: 'TestBuildLogs_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)_${{ parameters.testGroup }}'
continueOnError: true
condition: always()
fetchDepth: 5
### Zip up downloaded repo and publish to Helix
- - template: /eng/upload-artifact-step.yml
+ - template: upload-artifact-step.yml
parameters:
displayName: 'GIT repository (Windows)'
rootFolder: $(Build.SourcesDirectory)
fetchDepth: 5
### Zip up downloaded repo and publish to Helix
- - template: /eng/upload-artifact-step.yml
+ - template: upload-artifact-step.yml
parameters:
displayName: 'GIT repository (Unix)'
rootFolder: $(Build.SourcesDirectory)
steps:
# Download product build
- - template: /eng/download-artifact-step.yml
+ - template: download-artifact-step.yml
parameters:
downloadFolder: $(binTestsPath)/tmp
unpackFolder: $(buildProductRootFolderPath)
--- /dev/null
+# Internal resources (telemetry, microbuild) can only be accessed from non-public projects,
+# and some (Microbuild) should only be applied to non-PR cases for internal builds.
+
+parameters:
+# Job schema parameters - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job
+ cancelTimeoutInMinutes: ''
+ condition: ''
+ container: ''
+ continueOnError: false
+ dependsOn: ''
+ displayName: ''
+ pool: ''
+ steps: []
+ strategy: ''
+ timeoutInMinutes: ''
+ variables: []
+ workspace: ''
+
+# Job base template specific parameters
+ # See schema documentation - https://github.com/dotnet/arcade/blob/master/Documentation/AzureDevOps/TemplateSchema.md
+ artifacts: ''
+ enableMicrobuild: false
+ enablePublishBuildArtifacts: false
+ enablePublishBuildAssets: false
+ enablePublishTestResults: false
+ enablePublishUsingPipelines: false
+ name: ''
+ preSteps: []
+ runAsPublic: false
+
+jobs:
+- job: ${{ parameters.name }}
+
+ ${{ if ne(parameters.cancelTimeoutInMinutes, '') }}:
+ cancelTimeoutInMinutes: ${{ parameters.cancelTimeoutInMinutes }}
+
+ ${{ if ne(parameters.condition, '') }}:
+ condition: ${{ parameters.condition }}
+
+ ${{ if ne(parameters.container, '') }}:
+ container: ${{ parameters.container }}
+
+ ${{ if ne(parameters.continueOnError, '') }}:
+ continueOnError: ${{ parameters.continueOnError }}
+
+ ${{ if ne(parameters.dependsOn, '') }}:
+ dependsOn: ${{ parameters.dependsOn }}
+
+ ${{ if ne(parameters.displayName, '') }}:
+ displayName: ${{ parameters.displayName }}
+
+ ${{ if ne(parameters.pool, '') }}:
+ pool: ${{ parameters.pool }}
+
+ ${{ if ne(parameters.strategy, '') }}:
+ strategy: ${{ parameters.strategy }}
+
+ ${{ if ne(parameters.timeoutInMinutes, '') }}:
+ timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
+
+ variables:
+ - ${{ if ne(parameters.enableTelemetry, 'false') }}:
+ - name: DOTNET_CLI_TELEMETRY_PROFILE
+ value: '$(Build.Repository.Uri)'
+ - ${{ each variable in parameters.variables }}:
+ # handle name-value variable syntax
+ # example:
+ # - name: [key]
+ # value: [value]
+ - ${{ if ne(variable.name, '') }}:
+ - name: ${{ variable.name }}
+ value: ${{ variable.value }}
+
+ # handle variable groups
+ - ${{ if ne(variable.group, '') }}:
+ - group: ${{ variable.group }}
+
+ # handle key-value variable syntax.
+ # example:
+ # - [key]: [value]
+ - ${{ if and(eq(variable.name, ''), eq(variable.group, '')) }}:
+ - ${{ each pair in variable }}:
+ - name: ${{ pair.key }}
+ value: ${{ pair.value }}
+
+ # DotNet-HelixApi-Access provides 'HelixApiAccessToken' for internal builds
+ - ${{ if and(eq(parameters.enableTelemetry, 'true'), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+ - group: DotNet-HelixApi-Access
+
+ ${{ if ne(parameters.workspace, '') }}:
+ workspace: ${{ parameters.workspace }}
+
+ steps:
+ - ${{ if ne(parameters.preSteps, '') }}:
+ - ${{ each preStep in parameters.preSteps }}:
+ - ${{ preStep }}
+
+ - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+ - ${{ if eq(parameters.enableMicrobuild, 'true') }}:
+ - task: MicroBuildSigningPlugin@2
+ displayName: Install MicroBuild plugin
+ inputs:
+ signType: $(_SignType)
+ zipSources: false
+ feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json
+ env:
+ TeamName: $(_TeamName)
+ continueOnError: ${{ parameters.continueOnError }}
+ condition: and(succeeded(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT'))
+
+ - task: NuGetAuthenticate@0
+
+ - ${{ if or(eq(parameters.artifacts.download, 'true'), ne(parameters.artifacts.download, '')) }}:
+ - task: DownloadPipelineArtifact@2
+ inputs:
+ buildType: current
+ artifactName: ${{ coalesce(parameters.artifacts.download.name, 'Artifacts_$(Agent.OS)_$(_BuildConfig)') }}
+ targetPath: ${{ coalesce(parameters.artifacts.download.path, 'artifacts') }}
+ itemPattern: ${{ coalesce(parameters.artifacts.download.pattern, '**') }}
+
+ - ${{ each step in parameters.steps }}:
+ - ${{ if ne(step, '') }}:
+ - ${{ step }}
+
+ - ${{ if eq(parameters.enableMicrobuild, 'true') }}:
+ - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+ - task: MicroBuildCleanup@1
+ displayName: Execute Microbuild cleanup tasks
+ condition: and(always(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT'))
+ continueOnError: ${{ parameters.continueOnError }}
+ env:
+ TeamName: $(_TeamName)
+
+ - ${{ if ne(parameters.artifacts.publish, '') }}:
+ - ${{ if or(eq(parameters.artifacts.publish.artifacts, 'true'), ne(parameters.artifacts.publish.artifacts, '')) }}:
+ - task: CopyFiles@2
+ displayName: Gather binaries for publish to artifacts
+ inputs:
+ SourceFolder: 'artifacts/bin'
+ Contents: '**'
+ TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/bin'
+ - task: CopyFiles@2
+ displayName: Gather packages for publish to artifacts
+ inputs:
+ SourceFolder: 'artifacts/packages'
+ Contents: '**'
+ TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/packages'
+ - task: PublishBuildArtifacts@1
+ displayName: Publish pipeline artifacts
+ inputs:
+ PathtoPublish: '$(Build.ArtifactStagingDirectory)/artifacts'
+ PublishLocation: Container
+ ArtifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }}
+ continueOnError: true
+ condition: always()
+ - ${{ if or(eq(parameters.artifacts.publish.logs, 'true'), ne(parameters.artifacts.publish.logs, '')) }}:
+ - publish: artifacts/log
+ artifact: ${{ coalesce(parameters.artifacts.publish.logs.name, 'Logs_Build_$(Agent.Os)_$(_BuildConfig)') }}
+ displayName: Publish logs
+ continueOnError: true
+ condition: always()
+ - ${{ if or(eq(parameters.artifacts.publish.manifests, 'true'), ne(parameters.artifacts.publish.manifests, '')) }}:
+ - ${{ if and(ne(parameters.enablePublishUsingPipelines, 'true'), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+ - task: CopyFiles@2
+ displayName: Gather Asset Manifests
+ inputs:
+ SourceFolder: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/AssetManifest'
+ TargetFolder: '$(Build.ArtifactStagingDirectory)/AssetManifests'
+ continueOnError: ${{ parameters.continueOnError }}
+ condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true'))
+
+ - task: PublishBuildArtifacts@1
+ displayName: Push Asset Manifests
+ inputs:
+ PathtoPublish: '$(Build.ArtifactStagingDirectory)/AssetManifests'
+ PublishLocation: Container
+ ArtifactName: AssetManifests
+ continueOnError: ${{ parameters.continueOnError }}
+ condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true'))
+
+ - ${{ if ne(parameters.enablePublishBuildArtifacts, 'false') }}:
+ - task: PublishBuildArtifacts@1
+ displayName: Publish Logs
+ inputs:
+ PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)'
+ PublishLocation: Container
+ ArtifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)' ) }}
+ continueOnError: true
+ condition: always()
+
+ - ${{ if eq(parameters.enablePublishTestResults, 'true') }}:
+ - task: PublishTestResults@2
+ displayName: Publish Test Results
+ inputs:
+ testResultsFormat: 'xUnit'
+ testResultsFiles: '*.xml'
+ searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)'
+ continueOnError: true
+ condition: always()
+
+ - ${{ if and(eq(parameters.enablePublishBuildAssets, true), ne(parameters.enablePublishUsingPipelines, 'true'), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+ - task: CopyFiles@2
+ displayName: Gather Asset Manifests
+ inputs:
+ SourceFolder: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/AssetManifest'
+ TargetFolder: '$(Build.StagingDirectory)/AssetManifests'
+ continueOnError: ${{ parameters.continueOnError }}
+ condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true'))
+
+ - task: PublishBuildArtifacts@1
+ displayName: Push Asset Manifests
+ inputs:
+ PathtoPublish: '$(Build.StagingDirectory)/AssetManifests'
+ PublishLocation: Container
+ ArtifactName: AssetManifests
+ continueOnError: ${{ parameters.continueOnError }}
+ condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true'))
### buildConfig and archType.
jobs:
-- template: /eng/common/templates/job/performance.yml
+- template: run-performance-job.yml
parameters:
# Compute job name from template parameters
jobName: ${{ format('perfbuild_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
${{ if eq(parameters.osGroup, 'Windows_NT') }}:
name: NetCoreInternal-Pool
queue: BuildPool.Windows.10.Amd64.VS2019
+ buildConfig: ${{ parameters.buildConfig }}
+ archType: ${{ parameters.archType }}
osGroup: ${{ parameters.osGroup }}
+ osSubgroup: ${{ parameters.osSubgroup }}
# Test job depends on the corresponding build job
dependsOn: ${{ format('build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
${{ if ne(parameters.osGroup, 'Windows_NT') }}:
extraSetupParameters: --corerootdirectory $(Build.SourcesDirectory)/bin/tests/${{ parameters.osGroup }}.${{ parameters.archType }}.Release/Tests/Core_Root --architecture ${{ parameters.archType }}
- variables:
- - name: binTestsPath
- value: $(Build.SourcesDirectory)/bin/tests
-
- - name: buildConfig
- value: ${{ parameters.buildConfig }}
-
- - ${{ if eq(parameters.buildConfig, 'checked') }}:
- - name: buildConfigUpper
- value: 'Checked'
-
- - ${{ if eq(parameters.buildConfig, 'debug') }}:
- - name: buildConfigUpper
- value: 'Debug'
-
- - ${{ if eq(parameters.buildConfig, 'release') }}:
- - name: buildConfigUpper
- value: 'Release'
-
- - name: buildProductArtifactName
- value: 'BinDir_${{ parameters.osGroup }}${{ parameters.osSubgroup }}_${{ parameters.archType }}_${{ parameters.buildConfig }}'
-
- - name: buildProductRootFolderPath
- value: $(Build.SourcesDirectory)/bin/Product/${{ parameters.osGroup }}.${{ parameters.archType }}.$(buildConfigUpper)
-
- - name: archiveExtension
- value: '.zip'
-
- - ${{ if ne(parameters.osGroup, 'Windows_NT') }}:
- - name: archiveExtension
- value: '.tar.gz'
-
-
frameworks:
- ${{ parameters.framework }}
steps:
# Download product binaries directory
- - template: /eng/download-artifact-step.yml
+ - template: download-artifact-step.yml
parameters:
downloadFolder: $(binTestsPath)/tmp
unpackFolder: $(buildProductRootFolderPath)
#
# Checkout repository
#
-- template: /eng/checkout-job.yml
+- template: ../checkout-job.yml
#
# Debug builds
#
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-job.yml
buildConfig: debug
#
# Checked builds
#
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-job.yml
buildConfig: checked
#
# Release builds
#
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-job.yml
buildConfig: release
#
# Checked test builds
#
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-test-job.yml
buildConfig: checked
#
# Checked JIT test runs
#
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: run-test-job.yml
buildConfig: checked
#
# Checked R2R test runs
#
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: run-test-job.yml
buildConfig: checked
#
# Crossgen-comparison jobs
#
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: crossgen-comparison-job.yml
buildConfig: release
#
# Formatting
#
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: format-job.yml
platforms:
#
# Checkout repository
#
-- template: /eng/checkout-job.yml
+- template: ../checkout-job.yml
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-job.yml
buildConfig: checked
jobParameters:
testGroup: jitstress
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: run-test-job.yml
buildConfig: checked
#
# Checkout repository
#
-- template: /eng/checkout-job.yml
+- template: ../checkout-job.yml
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-job.yml
buildConfig: checked
jobParameters:
testGroup: jitstress
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: run-test-job.yml
buildConfig: checked
#
# Checkout repository
#
-- template: /eng/checkout-job.yml
+- template: ../checkout-job.yml
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-job.yml
buildConfig: checked
jobParameters:
testGroup: jitstressregs
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: run-test-job.yml
buildConfig: checked
#
# Checkout repository
#
-- template: /eng/checkout-job.yml
+- template: ../checkout-job.yml
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-job.yml
buildConfig: checked
jobParameters:
testGroup: outerloop
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: run-test-job.yml
buildConfig: checked
#
# Checkout repository
#
-- template: /eng/checkout-job.yml
+- template: ../checkout-job.yml
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-job.yml
buildConfig: release
jobParameters:
testGroup: gc-longrunning
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-test-job.yml
buildConfig: release
jobParameters:
testGroup: gc-longrunning
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: run-test-job.yml
buildConfig: release
#
# Checkout repository
#
-- template: /eng/checkout-job.yml
+- template: ../checkout-job.yml
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-job.yml
buildConfig: release
jobParameters:
testGroup: gc-simulator
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: test-job.yml
buildConfig: release
#
# Checkout repository
#
-- template: /eng/checkout-job.yml
+- template: ../checkout-job.yml
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-job.yml
buildConfig: checked
jobParameters:
testGroup: gcstress-extra
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: test-job.yml
buildConfig: checked
#
# Checkout repository
#
-- template: /eng/checkout-job.yml
+- template: ../checkout-job.yml
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-job.yml
buildConfig: checked
jobParameters:
testGroup: gcstress0x3-gcstress0xc
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: test-job.yml
buildConfig: checked
#
# Checkout repository
#
- - template: /eng/checkout-job.yml
+ - template: ../checkout-job.yml
- stage: build
displayName: Build
#
# Release builds
#
- - template: /eng/platform-matrix.yml
+ - template: ../platform-matrix.yml
parameters:
jobTemplate: build-job.yml
buildConfig: release
# product build job), and publishes them to the build assets
# registry. Its dependencies should be updated to include all of the
# official builds if we add more platform/arch combinations.
- - template: /eng/finalize-publish.yml
+ - template: ../finalize-publish.yml
parameters:
dependsOn:
- build_Linux_arm_release
#
# Release test builds
#
- - template: /eng/platform-matrix.yml
+ - template: ../platform-matrix.yml
parameters:
jobTemplate: build-test-job.yml
buildConfig: release
#
# Release JIT test executions
#
- - template: /eng/platform-matrix.yml
+ - template: ../platform-matrix.yml
parameters:
jobTemplate: run-test-job.yml
buildConfig: release
#
# Release R2R test executions
#
- - template: /eng/platform-matrix.yml
+ - template: ../platform-matrix.yml
parameters:
jobTemplate: run-test-job.yml
buildConfig: release
#
# Checkout repository
#
-- template: /eng/checkout-job.yml
+- template: ../checkout-job.yml
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-job.yml
buildConfig: checked
jobParameters:
testGroup: jitstress-isas-arm
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: test-job.yml
buildConfig: checked
#
# Checkout repository
#
-- template: /eng/checkout-job.yml
+- template: ../checkout-job.yml
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-job.yml
buildConfig: checked
jobParameters:
testGroup: jitstress-isas-x86
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-test-job.yml
buildConfig: checked
jobParameters:
testGroup: jitstress-isas-x86
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: run-test-job.yml
buildConfig: checked
#
# Checkout repository
#
-- template: /eng/checkout-job.yml
+- template: ../checkout-job.yml
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-job.yml
buildConfig: checked
jobParameters:
testGroup: jitstress
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: test-job.yml
buildConfig: checked
#
# Checkout repository
#
-- template: /eng/checkout-job.yml
+- template: ../checkout-job.yml
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-job.yml
buildConfig: checked
jobParameters:
testGroup: jitstress2-jitstressregs
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: test-job.yml
buildConfig: checked
#
# Checkout repository
#
-- template: /eng/checkout-job.yml
+- template: ../checkout-job.yml
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-job.yml
buildConfig: checked
jobParameters:
testGroup: jitstressregs-x86
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: test-job.yml
buildConfig: checked
#
# Checkout repository
#
-- template: /eng/checkout-job.yml
+- template: ../checkout-job.yml
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-job.yml
buildConfig: checked
jobParameters:
testGroup: jitstressregs
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-test-job.yml
buildConfig: checked
jobParameters:
testGroup: jitstressregs
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: run-test-job.yml
buildConfig: checked
#
# Checkout repository
#
-- template: /eng/checkout-job.yml
+- template: ../checkout-job.yml
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-job.yml
buildConfig: release
jobParameters:
testGroup: perf
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: perf-job.yml
buildConfig: release
#
# Checkout repository
#
-- template: /eng/checkout-job.yml
+- template: ../checkout-job.yml
#
# Debug builds
#
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-job.yml
buildConfig: debug
#
# Checked builds
#
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-job.yml
buildConfig: checked
#
# Release builds
#
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-job.yml
buildConfig: release
#
# Checked test builds
#
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-test-job.yml
buildConfig: checked
#
# Checked JIT test executions
#
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: run-test-job.yml
buildConfig: checked
#
# Checked R2R test executions
#
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: run-test-job.yml
buildConfig: checked
#
# CoreFX test runs against CoreCLR
#
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: run-test-job.yml
buildConfig: checked
#
# Crossgen-comparison jobs
#
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: crossgen-comparison-job.yml
buildConfig: checked
#
# Release test builds
#
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-test-job.yml
buildConfig: release
#
# Release test builds
#
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: run-test-job.yml
buildConfig: release
#
# Formatting
#
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: format-job.yml
platforms:
#
# Checkout repository
#
-- template: /eng/checkout-job.yml
+- template: ../checkout-job.yml
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-job.yml
buildConfig: checked
jobParameters:
testGroup: r2r-extra
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: test-job.yml
buildConfig: checked
#
# Checkout repository
#
-- template: /eng/checkout-job.yml
+- template: ../checkout-job.yml
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-job.yml
buildConfig: checked
jobParameters:
testGroup: outerloop
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: test-job.yml
buildConfig: checked
#
# Checkout repository
#
-- template: /eng/checkout-job.yml
+- template: ../checkout-job.yml
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: build-job.yml
buildConfig: checked
jobParameters:
testGroup: outerloop
-- template: /eng/platform-matrix.yml
+- template: ../platform-matrix.yml
parameters:
jobTemplate: test-job.yml
buildConfig: checked
--- /dev/null
+parameters:
+ steps: [] # optional -- any additional steps that need to happen before pulling down the performance repo and sending the performance benchmarks to helix (ie building your repo)
+ variables: [] # optional -- list of additional variables to send to the template
+ jobName: '' # required -- job name
+ displayName: '' # optional -- display name for the job. Will use jobName if not passed
+ pool: '' # required -- name of the Build pool
+ container: '' # required -- name of the container
+ buildConfig: '' # required -- build configuration
+ archType: '' # required -- targeting CPU architecture
+ osGroup: '' # required -- operating system for the job
+ osSubgroup: '' # optional -- operating system subgroup
+ extraSetupParameters: '' # optional -- extra arguments to pass to the setup script
+ frameworks: ['netcoreapp3.0'] # optional -- list of frameworks to run against
+ continueOnError: 'false' # optional -- determines whether to continue the build if the step errors
+ dependsOn: '' # optional -- dependencies of the job
+ timeoutInMinutes: 320 # optional -- timeout for the job
+ enableTelemetry: false # optional -- enable for telemetry
+
+jobs:
+- template: xplat-pipeline-job.yml
+ parameters:
+ dependsOn: ${{ parameters.dependsOn }}
+ buildConfig: ${{ parameters.buildConfig }}
+ archType: ${{ parameters.archType }}
+ osGroup: ${{ parameters.osGroup }}
+ osSubgroup: ${{ parameters.osSubgroup }}
+ enableTelemetry: ${{ parameters.enableTelemetry }}
+ enablePublishBuildArtifacts: true
+ continueOnError: ${{ parameters.continueOnError }}
+
+ jobs:
+ - job: '${{ parameters.jobName }}'
+
+ ${{ if ne(parameters.displayName, '') }}:
+ displayName: '${{ parameters.displayName }}'
+ ${{ if eq(parameters.displayName, '') }}:
+ displayName: '${{ parameters.jobName }}'
+
+ timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
+
+ variables:
+
+ - ${{ each variable in parameters.variables }}:
+ - ${{ if ne(variable.name, '') }}:
+ - name: ${{ variable.name }}
+ value: ${{ variable.value }}
+ - ${{ if ne(variable.group, '') }}:
+ - group: ${{ variable.group }}
+
+ - IsInternal: ''
+ - HelixApiAccessToken: ''
+ - HelixPreCommand: ''
+
+ - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+ - ${{ if eq( parameters.osGroup, 'Windows_NT') }}:
+ - HelixPreCommand: 'set "PERFLAB_UPLOAD_TOKEN=$(PerfCommandUploadToken)"'
+ - IsInternal: -Internal
+ - ${{ if ne(parameters.osGroup, 'Windows_NT') }}:
+ - HelixPreCommand: 'export PERFLAB_UPLOAD_TOKEN="$(PerfCommandUploadTokenLinux)"'
+ - IsInternal: --internal
+
+ - group: DotNet-HelixApi-Access
+ - group: dotnet-benchview
+
+ workspace:
+ clean: all
+ pool:
+ ${{ parameters.pool }}
+ container: ${{ parameters.container }}
+ strategy:
+ matrix:
+ ${{ each framework in parameters.frameworks }}:
+ ${{ framework }}:
+ _Framework: ${{ framework }}
+ steps:
+ - checkout: self
+ clean: true
+ # Run all of the steps to setup repo
+ - ${{ each step in parameters.steps }}:
+ - ${{ step }}
+ - powershell: $(Build.SourcesDirectory)\eng\common\performance\performance-setup.ps1 $(IsInternal) -Framework $(_Framework) ${{ parameters.extraSetupParameters }}
+ displayName: Performance Setup (Windows)
+ condition: and(succeeded(), eq(variables['Agent.Os'], 'Windows_NT'))
+ continueOnError: ${{ parameters.continueOnError }}
+ - script: $(coreClrRepoRoot)/eng/common/performance/performance-setup.sh $(IsInternal) --framework $(_Framework) ${{ parameters.extraSetupParameters }}
+ displayName: Performance Setup (Unix)
+ condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'))
+ continueOnError: ${{ parameters.continueOnError }}
+ - script: $(Python) $(PerformanceDirectory)/scripts/ci_setup.py $(SetupArguments)
+ displayName: Run ci setup script
+ # Run perf testing in helix
+ - template: /eng/common/templates/steps/perf-send-to-helix.yml
+ parameters:
+ HelixSource: '$(HelixSourcePrefix)/$(Build.Repository.Name)/$(Build.SourceBranch)' # sources must start with pr/, official/, prodcon/, or agent/
+ HelixType: 'test/performance/$(Kind)/$(_Framework)/$(Architecture)'
+ HelixAccessToken: $(HelixApiAccessToken)
+ HelixTargetQueues: $(Queue)
+ HelixPreCommands: $(HelixPreCommand)
+ Creator: $(Creator)
+ WorkItemTimeout: 4:00 # 4 hours
+ WorkItemDirectory: '$(WorkItemDirectory)' # WorkItemDirectory can not be empty, so we send it some docs to keep it happy
+ CorrelationPayloadDirectory: '$(PayloadDirectory)' # it gets checked out to a folder with shorter path than WorkItemDirectory so we can avoid file name too long exceptions
\ No newline at end of file
- name: crossgenArg
value: ''
+ - name: LogNamePrefix
+ value: TestRunLogs
+
- ${{ if eq(parameters.readyToRun, true) }}:
- name: crossgenArg
value: 'crossgen'
+ - name: LogNamePrefix
+ value: TestRunLogs_R2R
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- group: DotNet-HelixApi-Access
# Download and unzip managed test artifacts
- ${{ if ne(parameters.corefxTests, true) }}:
- - template: /eng/download-artifact-step.yml
+ - template: download-artifact-step.yml
parameters:
downloadFolder: '$(binTestsPath)/tmp'
unpackFolder: '$(testRootFolderPath)'
# Download and unzip test build tree
- ${{ if ne(parameters.corefxTests, true) }}:
- - template: /eng/download-artifact-step.yml
+ - template: download-artifact-step.yml
parameters:
downloadFolder: '$(binTestsPath)/tmp'
unpackFolder: '$(testBuildRootFolderPath)'
# Download product binaries directory
- - template: /eng/download-artifact-step.yml
+ - template: download-artifact-step.yml
parameters:
downloadFolder: $(binTestsPath)/tmp
unpackFolder: $(buildProductRootFolderPath)
# Download and unzip the Microsoft.NET.Sdk.IL package needed for traversing
# ilproj test projects during copynativeonly.
- ${{ if ne(parameters.corefxTests, true) }}:
- - template: /eng/download-artifact-step.yml
+ - template: download-artifact-step.yml
parameters:
downloadFolder: '$(binTestsPath)/tmp'
unpackFolder: '$(microsoftNetSdkIlFolderPath)'
# Download and unzip native test artifacts
- ${{ if ne(parameters.corefxTests, true) }}:
- - template: /eng/download-artifact-step.yml
+ - template: download-artifact-step.yml
parameters:
downloadFolder: '$(binTestsPath)/tmp'
unpackFolder: '$(testNativeRootFolderPath)'
# the native artifacts to the final test folders is dependent on availability of the
# managed test artifacts.
- ${{ if ne(parameters.corefxTests, true) }}:
- - ${{ if ne(parameters.osGroup, 'Windows_NT') }}:
- - script: $(coreClrRepoRoot)/build-test$(scriptExt) copynativeonly $(buildConfig) $(archType) $(priorityArg)
- displayName: Copy native test components to test output folder
- - ${{ if eq(parameters.osGroup, 'Windows_NT') }}:
- - script: $(coreClrRepoRoot)\build-test$(scriptExt) copynativeonly $(buildConfig) $(archType) $(priorityArg)
- displayName: Copy native test components to test output folder
+ - script: $(coreClrRepoRootDir)build-test$(scriptExt) copynativeonly $(buildConfig) $(archType) $(priorityArg)
+ displayName: Copy native test components to test output folder
# Generate test host
- ${{ if eq(parameters.corefxTests, true) }}:
- ${{ if ne(parameters.osGroup, 'Windows_NT') }}:
- - script: ./build-test.sh skipmanaged skipnative $(testhostArg) $(buildConfig) $(archType) $(crossArg) $(priorityArg)
+ - script: $(coreClrRepoRootDir)build-test$(scriptExt) skipmanaged skipnative $(testhostArg) $(buildConfig) $(archType) $(crossArg) $(priorityArg)
displayName: Generate test host
- ${{ if eq(parameters.osGroup, 'Windows_NT') }}:
- - script: build-test.cmd skipmanaged skipnative $(testhostArg) $(buildConfig) $(archType) $(priorityArg)
+ - script: $(coreClrRepoRootDir)build-test$(scriptExt) skipmanaged skipnative $(testhostArg) $(buildConfig) $(archType) $(priorityArg)
displayName: Generate test host
# Crossgen framework assemblies prior to triggering readyToRun execution runs.
- ${{ if eq(parameters.readyToRun, true) }}:
- ${{ if ne(parameters.osGroup, 'Windows_NT') }}:
- - script: ./build-test.sh skipmanaged skipnative $(crossgenArg) $(buildConfig) $(archType) $(crossArg) $(priorityArg)
+ - script: $(coreClrRepoRootDir)build-test$(scriptExt) skipmanaged skipnative $(crossgenArg) $(buildConfig) $(archType) $(crossArg) $(priorityArg)
displayName: Crossgen framework assemblies
- ${{ if eq(parameters.osGroup, 'Windows_NT') }}:
- - script: build-test.cmd skipmanaged skipnative $(crossgenArg) $(buildConfig) $(archType) $(priorityArg)
+ - script: $(coreClrRepoRootDir)build-test$(scriptExt) skipmanaged skipnative $(crossgenArg) $(buildConfig) $(archType) $(priorityArg)
displayName: Crossgen framework assemblies
# Send tests to Helix
- - template: /eng/send-to-helix-step.yml
+ - template: send-to-helix-step.yml
parameters:
displayName: Send tests to Helix
buildConfig: $(buildConfigUpper)
archType: ${{ parameters.archType }}
osGroup: ${{ parameters.osGroup }}
+ coreClrRepoRoot: $(coreClrRepoRoot)
${{ if eq(variables['System.TeamProject'], 'public') }}:
creator: $(Build.DefinitionName)
# Choose which tests to send to Helix: CoreFX or CoreCLR.
${{ if eq(parameters.corefxTests, true) }}:
- helixProjectArguments: 'eng/helixcorefxtests.proj'
+ helixProjectArguments: '$(coreClrRepoRoot)/eng/helixcorefxtests.proj'
${{ if ne(parameters.corefxTests, true) }}:
- helixProjectArguments: 'tests/src/helixpublishwitharcade.proj'
+ helixProjectArguments: '$(coreClrRepoRoot)/tests/src/helixpublishwitharcade.proj'
${{ if in(parameters.testGroup, 'innerloop', 'outerloop') }}:
scenarios:
- task: PublishBuildArtifacts@1
displayName: Publish Logs
inputs:
- pathtoPublish: $(Build.SourcesDirectory)/bin/Logs
- artifactName: ${{ format('TestRunLogs_{0}{1}_{2}_{3}_{4}_{5}_{6}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, parameters.managedTestBuildOsGroup, parameters.managedTestBuildOsSubgroup, parameters.testGroup) }}
+ pathtoPublish: $(coreClrRepoRoot)/bin/Logs
+ artifactName: '$(LogNamePrefix)_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)_${{ parameters.testGroup }}'
continueOnError: true
condition: always()
\ No newline at end of file
runInUnloadableContext: ''
longRunningGcTests: ''
gcSimulatorTests: ''
+ coreClrRepoRoot: ''
steps:
- ${{ if eq(parameters.osGroup, 'Windows_NT') }}:
# TODO: Remove and consolidate this when we move to arcade via init-tools.cmd.
- - powershell: eng\common\build.ps1 /p:DotNetPublishToBlobFeed=true -ci -restore -projects $(Build.SourcesDirectory)\eng\empty.csproj
+ - powershell: $(Build.SourcesDirectory)\eng\common\build.ps1 /p:DotNetPublishToBlobFeed=true -ci -restore -projects ${{ parameters.coreClrRepoRoot }}\eng\empty.csproj
displayName: Restore blob feed tasks
${{ if ne(parameters.condition, '') }}:
condition: ${{ parameters.condition }}
- - powershell: eng\common\msbuild.ps1 -ci ${{ parameters.helixProjectArguments }} /maxcpucount /bl:$(Build.SourcesDirectory)/bin/Logs/SendToHelix.binlog
+ - powershell: eng\common\msbuild.ps1 -ci ${{ parameters.helixProjectArguments }} /maxcpucount /bl:${{ parameters.coreClrRepoRoot }}/bin/Logs/SendToHelix.binlog
displayName: ${{ parameters.displayName }}
${{ if ne(parameters.condition, '') }}:
condition: ${{ parameters.condition }}
- ${{ if ne(parameters.osGroup, 'Windows_NT') }}:
# TODO: Remove and consolidate this when we move to arcade via init-tools.sh.
- - script: ./eng/common/build.sh /p:DotNetPublishToBlobFeed=true --ci --restore --projects $(Build.SourcesDirectory)/eng/empty.csproj
+ - script: $(Build.SourcesDirectory)/eng/common/build.sh /p:DotNetPublishToBlobFeed=true --ci --restore --projects ${{ parameters.coreClrRepoRoot }}/eng/empty.csproj
displayName: Restore blob feed tasks
${{ if ne(parameters.condition, '') }}:
condition: ${{ parameters.condition }}
# Arcade uses this SDK instead of trying to restore one.
DotNetCoreSdkDir: /usr/local/dotnet
- - script: ./eng/common/msbuild.sh --ci ${{ parameters.helixProjectArguments }} /maxcpucount /bl:$(Build.SourcesDirectory)/bin/Logs/SendToHelix.binlog
+ - script: $(Build.SourcesDirectory)/eng/common/msbuild.sh --ci ${{ parameters.helixProjectArguments }} /maxcpucount /bl:${{ parameters.coreClrRepoRoot }}/bin/Logs/SendToHelix.binlog
displayName: ${{ parameters.displayName }}
${{ if ne(parameters.condition, '') }}:
condition: ${{ parameters.condition }}
variables: {} ## any extra variables to add to the defaults defined below
jobs:
-- template: /eng/common/templates/job/job.yml
+- template: job.yml
parameters:
name: ${{ parameters.name }}
clean: true
# Download the GIT repository
- - template: /eng/download-artifact-step.yml
+ - template: download-artifact-step.yml
parameters:
displayName: 'GIT repository'
downloadFolder: $(Build.SourcesDirectory)/download/
variables: {} ## any extra variables to add to the defaults defined below
jobs:
-- template: /eng/xplat-job.yml
+- template: xplat-job.yml
parameters:
buildConfig: ${{ parameters.buildConfig }}
archType: ${{ parameters.archType }}
- name: testArtifactRootName
value: ${{ parameters.managedTestBuildOsGroup }}${{ parameters.managedTestBuildOsSubgroup }}_${{ parameters.archType }}_${{ parameters.buildConfig }}
+ - ${{ if eq(parameters.osGroup, 'Windows_NT') }}:
+ - name: archiveExtension
+ value: '.zip'
+ - name: archiveType
+ value: zip
+ - name: tarCompression
+ value: ''
+ - name: scriptExt
+ value: '.cmd'
+ - name: dir
+ value: '\'
+
+ - ${{ if ne(parameters.osGroup, 'Windows_NT') }}:
+ - name: archiveExtension
+ value: '.tar.gz'
+ - name: archiveType
+ value: tar
+ - name: tarCompression
+ value: gz
+ - name: scriptExt
+ value: '.sh'
+ - name: dir
+ value: '/'
+
- name: coreClrRepoRoot
- value: $(Build.SourcesDirectory)
+ value: '$(Build.SourcesDirectory)'
+
+ - name: coreClrRepoRootDir
+ value: '$(coreClrRepoRoot)$(dir)'
- name: binTestsPath
- value: $(coreClrRepoRoot)/bin/tests
+ value: '$(coreClrRepoRoot)/bin/tests'
- name: testRootFolderPath
- value: $(binTestsPath)/$(osGroup).$(archType).$(buildConfigUpper)
+ value: '$(binTestsPath)/$(osGroup).$(archType).$(buildConfigUpper)'
- name: nativeRootFolderPath
- value: $(binTestsPath)/$(osGroup).$(archType).$(buildConfigUpper)
+ value: '$(binTestsPath)/$(osGroup).$(archType).$(buildConfigUpper)'
- name: buildProductArtifactName
value: 'BinDir_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)'
- name: buildProductRootFolderPath
- value: $(Build.SourcesDirectory)/bin/Product/$(osGroup).$(archType).$(buildConfigUpper)
+ value: '$(coreClrRepoRoot)/bin/Product/$(osGroup).$(archType).$(buildConfigUpper)'
- name: testArtifactName
value: Tests_${{ parameters.managedTestBuildOsGroup }}${{ parameters.managedTestBuildOsSubgroup }}_$(archType)_$(buildConfig)
value: 'NativeTestComponents_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)'
- name: testNativeRootFolderPath
- value: $(binTestsPath)/obj/$(osGroup).$(archType).$(buildConfigUpper)
+ value: '$(binTestsPath)/obj/$(osGroup).$(archType).$(buildConfigUpper)'
- name: testBuildRootFolderPath
- value: $(binTestsPath)/$(osGroup).$(archType).$(buildConfigUpper)
+ value: '$(binTestsPath)/$(osGroup).$(archType).$(buildConfigUpper)'
- name: testBuildArtifactName
value: 'TestBuild_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)'
- name: microsoftNetSdkIlFolderPath
- value: $(Build.SourcesDirectory)/.packages/microsoft.net.sdk.il
+ value: '$(Build.SourcesDirectory)/.packages/microsoft.net.sdk.il'
- name: microsoftNetSdkIlArtifactName
value: 'MicrosoftNetSdkIlPackage_${{ parameters.managedTestBuildOsGroup }}${{ parameters.managedTestBuildOsSubgroup }}_$(archType)_$(buildConfig)'
- - ${{ if eq(parameters.osGroup, 'Windows_NT') }}:
- - name: archiveExtension
- value: '.zip'
- - name: archiveType
- value: zip
- - name: tarCompression
- value: ''
- - name: scriptExt
- value: '.cmd'
-
- - ${{ if ne(parameters.osGroup, 'Windows_NT') }}:
- - name: archiveExtension
- value: '.tar.gz'
- - name: archiveType
- value: tar
- - name: tarCompression
- value: gz
- - name: scriptExt
- value: '.sh'
-
- name: priorityArg
value: ''