container: ''
testGroup: ''
liveRuntimeBuildConfig: ''
+ testBuildPhase: ''
# When set to a non-empty value (Debug / Release), it determines libraries
# build configuration to use for the tests. Setting this property implies
${{ if eq(variables['System.TeamProject'], 'internal') }}:
continueOnError: true
+ # Compute job name from template parameters
${{ if eq(parameters.testGroup, 'innerloop') }}:
- name: '${{ parameters.runtimeFlavor }}_common_test_build_p0_${{ parameters.osGroup }}${{ parameters.osSubgroup }}_${{ parameters.archType }}_${{ parameters.buildConfig }}'
- displayName: '${{ parameters.runtimeFlavorDisplayName }} Common Pri0 Test Build ${{ parameters.osGroup }}${{ parameters.osSubgroup }} ${{ parameters.archType }} ${{ parameters.buildConfig }}'
+ ${{ if ne(parameters.testBuildPhase, 'targetGeneric') }}:
+ name: '${{ parameters.runtimeFlavor }}_common_test_build_p0_${{ parameters.osGroup }}${{ parameters.osSubgroup }}_${{ parameters.archType }}_${{ parameters.buildConfig }}'
+ displayName: '${{ parameters.runtimeFlavorDisplayName }} Common Pri0 Test Build ${{ parameters.osGroup }}${{ parameters.osSubgroup }} ${{ parameters.archType }} ${{ parameters.buildConfig }}'
+ ${{ if ne(parameters.testGroup, 'innerloop') }}:
+ ${{ if ne(parameters.testBuildPhase, 'targetGeneric') }}:
+ name: '${{ parameters.runtimeFlavor }}_common_test_build_p1_${{ parameters.osGroup }}${{ parameters.osSubgroup }}_${{ parameters.archType }}_${{ parameters.buildConfig }}'
+ displayName: '${{ parameters.runtimeFlavorDisplayName }} Common Pri1 Test Build ${{ parameters.osGroup }}${{ parameters.osSubgroup }} ${{ parameters.archType }} ${{ parameters.buildConfig }}'
+ ${{ if eq(parameters.testGroup, 'innerloop') }}:
+ ${{ if eq(parameters.testBuildPhase, 'targetGeneric') }}:
+ name: '${{ parameters.runtimeFlavor }}_common_test_build_p0_AnyOS_AnyCPU_${{ parameters.buildConfig }}_Lib${{ parameters.liveLibrariesBuildConfig }}'
+ displayName: '${{ parameters.runtimeFlavorDisplayName }} Common Pri0 Test Build AnyOS AnyCPU ${{ parameters.buildConfig }} Libraries:${{ parameters.liveLibrariesBuildConfig }}'
${{ if ne(parameters.testGroup, 'innerloop') }}:
- name: '${{ parameters.runtimeFlavor }}_common_test_build_p1_${{ parameters.osGroup }}${{ parameters.osSubgroup }}_${{ parameters.archType }}_${{ parameters.buildConfig }}'
- displayName: '${{ parameters.runtimeFlavorDisplayName }} Common Pri1 Test Build ${{ parameters.osGroup }}${{ parameters.osSubgroup }} ${{ parameters.archType }} ${{ parameters.buildConfig }}'
+ ${{ if eq(parameters.testBuildPhase, 'targetGeneric') }}:
+ name: '${{ parameters.runtimeFlavor }}_common_test_build_p1_AnyOS_AnyCPU_${{ parameters.buildConfig }}_Lib${{ parameters.liveLibrariesBuildConfig }}'
+ displayName: '${{ parameters.runtimeFlavorDisplayName }} Common Pri1 Test Build AnyOS AnyCPU ${{ parameters.buildConfig }} Libraries:${{ parameters.liveLibrariesBuildConfig }}'
# Since the condition is being altered, merge the default with the additional conditions.
# See https://docs.microsoft.com/azure/devops/pipelines/process/conditions
# Build managed test components
- - script: $(coreClrRepoRootDir)build-test$(scriptExt) skipnative skipgeneratelayout skiptestwrappers $(buildConfig) $(archType) $(crossArg) $(priorityArg) ci $(librariesOverrideArg)
+ - script: $(coreClrRepoRootDir)build-test$(scriptExt) ${{ parameters.testBuildPhase }} skipnative skipgeneratelayout skiptestwrappers $(buildConfig) $(archType) $(crossArg) $(priorityArg) ci $(librariesOverrideArg)
displayName: Build managed test components
parameters:
rootFolder: $(managedTestArtifactRootFolderPath)
includeRootFolder: false
- archiveType: $(archiveType)
- tarCompression: $(tarCompression)
- archiveExtension: $(archiveExtension)
- artifactName: $(managedTestArtifactName)
- displayName: 'managed test components'
+ ${{ if ne(parameters.testBuildPhase, 'targetGeneric') }}:
+ archiveExtension: $(archiveExtension)
+ archiveType: $(archiveType)
+ tarCompression: $(tarCompression)
+ artifactName: $(managedTestArtifactName)
+ displayName: 'managed test components'
+ ${{ if eq(parameters.testBuildPhase, 'targetGeneric') }}:
+ archiveExtension: '.tar.gz'
+ archiveType: tar
+ tarCompression: gz
+ artifactName: $(managedGenericTestArtifactName)
+ displayName: 'managed test components (generic)'
# Publish .packages/microsoft.net.sdk.il needed for traversing
# test projects during the copynativeonly command in run test job.
- - template: /eng/pipelines/common/upload-artifact-step.yml
- parameters:
- rootFolder: $(microsoftNetSdkIlFolderPath)
- includeRootFolder: false
- archiveType: $(archiveType)
- tarCompression: $(tarCompression)
- archiveExtension: $(archiveExtension)
- artifactName: $(microsoftNetSdkIlArtifactName)
- displayName: 'Microsoft.NET.Sdk.IL package'
+ - ${{ if ne(parameters.testBuildPhase, 'targetGeneric') }}:
+ - template: /eng/pipelines/common/upload-artifact-step.yml
+ parameters:
+ rootFolder: $(microsoftNetSdkIlFolderPath)
+ includeRootFolder: false
+ archiveType: $(archiveType)
+ tarCompression: $(tarCompression)
+ archiveExtension: $(archiveExtension)
+ artifactName: $(microsoftNetSdkIlArtifactName)
+ displayName: 'Microsoft.NET.Sdk.IL package'
# Publish Logs
displayName: Publish Logs
inputs:
targetPath: $(Build.SourcesDirectory)/artifacts/log
- artifactName: '${{ parameters.runtimeFlavor }}_Common_Runtime_TestBuildLogs_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)_${{ parameters.testGroup }}'
+ ${{ if ne(parameters.testBuildPhase, 'targetGeneric') }}:
+ artifactName: '${{ parameters.runtimeFlavor }}_Common_Runtime_TestBuildLogs_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)_${{ parameters.testGroup }}'
+ ${{ if eq(parameters.testBuildPhase, 'targetGeneric') }}:
+ artifactName: '${{ parameters.runtimeFlavor }}_Common_Runtime_TestBuildLogs_AnyOS_AnyCPU_$(buildConfig)_Lib${{ parameters.liveLibrariesBuildConfig }}_${{ parameters.testGroup }}'
continueOnError: true
condition: always()
variables: {}
pool: ''
runtimeFlavorDisplayName: 'CoreCLR'
+ testBuildPhased : false
### Test run job
- '${{ parameters.runtimeFlavor }}_common_test_build_p0_${{ parameters.managedTestBuildOsGroup }}${{ parameters.managedTestBuildOsSubgroup }}_${{ parameters.archType }}_${{parameters.buildConfig }}'
- ${{ if ne(parameters.testGroup, 'innerloop') }}:
- '${{ parameters.runtimeFlavor }}_common_test_build_p1_${{ parameters.managedTestBuildOsGroup }}${{ parameters.managedTestBuildOsSubgroup }}_${{ parameters.archType }}_${{parameters.buildConfig }}'
+ - ${{ if eq(parameters.testBuildPhased, true) }}:
+ - ${{ if eq(parameters.testGroup, 'innerloop') }}:
+ - '${{ parameters.runtimeFlavor }}_common_test_build_p0_AnyOS_AnyCPU_${{parameters.buildConfig }}_Lib${{ parameters.liveLibrariesBuildConfig }}'
+ - ${{ if ne(parameters.testGroup, 'innerloop') }}:
+ - '${{ parameters.runtimeFlavor }}_common_test_build_p1_AnyOS_AnyCPU_${{parameters.buildConfig }}_Lib${{ parameters.liveLibrariesBuildConfig }}'
- ${{ if ne(parameters.stagedBuild, true) }}:
- ${{ format('{0}_product_build_{1}{2}_{3}_{4}', parameters.runtimeFlavor, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
- ${{ if ne(parameters.liveLibrariesBuildConfig, '') }}:
# Download and unzip managed test artifacts
- ${{ if ne(parameters.corefxTests, true) }}:
+ - ${{ if eq(parameters.testBuildPhased, true) }}:
+ - template: /eng/pipelines/common/download-artifact-step.yml
+ parameters:
+ unpackFolder: '$(managedTestArtifactRootFolderPath)'
+ artifactFileName: '$(managedGenericTestArtifactName).tar.gz'
+ artifactName: '$(managedGenericTestArtifactName)'
+ displayName: 'generic managed test artifacts'
- template: /eng/pipelines/common/download-artifact-step.yml
parameters:
unpackFolder: '$(managedTestArtifactRootFolderPath)'
#
# Checked test builds
#
+- template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml
+ buildConfig: checked
+ platforms:
+ - OSX_x64
+ testGroup: outerloop
+ jobParameters:
+ liveLibrariesBuildConfig: Release
+ testBuildPhase: targetGeneric
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml
testGroup: outerloop
jobParameters:
liveLibrariesBuildConfig: Release
+ testBuildPhase: targetSpecific
#
# Checked JIT test runs
jobParameters:
testGroup: outerloop
liveLibrariesBuildConfig: Release
+ testBuildPhased: true
#
# Checked R2R test runs
readyToRun: true
displayNameArgs: R2R
liveLibrariesBuildConfig: Release
+ testBuildPhased: true
#
# Crossgen-comparison jobs
- name: corelibProductArtifactName
value: 'CoreLib_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)'
+ - name: managedGenericTestArtifactName
+ value: 'CoreCLRManagedTestArtifacts_AnyOS_AnyCPU_$(buildConfig)_Lib${{ parameters.liveLibrariesBuildConfig }}'
+
- name: managedTestArtifactName
value: 'CoreCLRManagedTestArtifacts_${{ parameters.managedTestBuildOsGroup }}${{ parameters.managedTestBuildOsSubgroup }}_$(archType)_$(buildConfig)'
jobParameters:
liveRuntimeBuildConfig: release
+#
+# Build libraries using live CoreLib
+# These are part of the test coreclr generic test build.
+#
+- template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/libraries/build-job.yml
+ buildConfig: Release
+ platforms:
+ - OSX_x64
+ jobParameters:
+ liveRuntimeBuildConfig: release
+ condition: >-
+ and(
+ ne(variables['debugOnPrReleaseOnRolling'], 'Release'),
+ or(
+ eq(dependencies.checkout.outputs['SetPathVars_coreclr.containsChange'], true),
+ eq(variables['isFullMatrix'], true)))
+
#
# Build libraries using Mono CoreLib only
#
# CoreCLR Test builds using live libraries release build
# Only when CoreCLR is changed
#
+- template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml
+ buildConfig: checked
+ platforms:
+ - OSX_x64
+ jobParameters:
+ testGroup: innerloop
+ liveLibrariesBuildConfig: Release
+ testBuildPhase: targetGeneric
+ condition: >-
+ or(
+ eq(dependencies.checkout.outputs['SetPathVars_coreclr.containsChange'], true),
+ eq(variables['isFullMatrix'], true))
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml
jobParameters:
testGroup: innerloop
liveLibrariesBuildConfig: Release
+ testBuildPhase: targetSpecific
condition: >-
or(
eq(dependencies.checkout.outputs['SetPathVars_coreclr.containsChange'], true),
# CoreCLR Test builds using live libraries debug build
# Only when CoreCLR is changed
#
+- template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml
+ buildConfig: checked
+ platforms:
+ - OSX_x64
+ jobParameters:
+ testGroup: innerloop
+ liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }}
+ testBuildPhase: targetGeneric
+ condition: >-
+ and(ne(variables['debugOnPrReleaseOnRolling'], 'Release'),
+ or(
+ eq(dependencies.checkout.outputs['SetPathVars_coreclr.containsChange'], true),
+ eq(variables['isFullMatrix'], true)))
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml
jobParameters:
testGroup: innerloop
liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }}
+ testBuildPhase: targetSpecific
condition: >-
or(
eq(dependencies.checkout.outputs['SetPathVars_coreclr.containsChange'], true),
jobParameters:
testGroup: innerloop
liveLibrariesBuildConfig: Release
+ testBuildPhased: true
condition: >-
or(
eq(dependencies.checkout.outputs['SetPathVars_coreclr.containsChange'], true),
jobParameters:
testGroup: innerloop
liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }}
+ testBuildPhased: true
condition: >-
or(
eq(dependencies.checkout.outputs['SetPathVars_coreclr.containsChange'], true),
</ItemGroup>
<Move SourceFiles="@(ServerAssembly)" DestinationFolder="$(ServerAssemblyDest)" />
</Target>
+ <PropertyGroup>
+ <CLRTestNeedTarget>1</CLRTestNeedTarget>
+ </PropertyGroup>
+ <ItemGroup>
+ <TraitTags Include="OsSpecific" />
+ </ItemGroup>
</Project>
<ProjectReference Include="AssemblyC.csproj" />
<ProjectReference Include="AssemblyContracts.csproj" />
</ItemGroup>
+ <PropertyGroup>
+ <CLRTestNeedTarget>1</CLRTestNeedTarget>
+ </PropertyGroup>
+ <ItemGroup>
+ <TraitTags Include="OsSpecific" />
+ </ItemGroup>
</Project>
<ProjectReference Include="AssemblyC.csproj" />
<ProjectReference Include="AssemblyContracts.csproj" />
</ItemGroup>
+ <PropertyGroup>
+ <CLRTestNeedTarget>1</CLRTestNeedTarget>
+ </PropertyGroup>
+ <ItemGroup>
+ <TraitTags Include="OsSpecific" />
+ </ItemGroup>
</Project>
<ItemGroup>
<Compile Include="AssemblyC.cs" />
</ItemGroup>
+ <PropertyGroup>
+ <CLRTestNeedTarget>1</CLRTestNeedTarget>
+ </PropertyGroup>
+ <ItemGroup>
+ <TraitTags Include="OsSpecific" />
+ </ItemGroup>
</Project>
<ItemGroup>
<Compile Include="AssemblyContracts.cs" />
</ItemGroup>
+ <PropertyGroup>
+ <CLRTestNeedTarget>1</CLRTestNeedTarget>
+ </PropertyGroup>
+ <ItemGroup>
+ <TraitTags Include="OsSpecific" />
+ </ItemGroup>
</Project>
<ItemGroup>
<ProjectReference Include="../MockReferenceTrackerRuntime/CMakeLists.txt" />
</ItemGroup>
+ <PropertyGroup>
+ <CLRTestNeedTarget>1</CLRTestNeedTarget>
+ </PropertyGroup>
+ <ItemGroup>
+ <TraitTags Include="OsSpecific" />
+ </ItemGroup>
</Project>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
+ <PropertyGroup>
+ <CLRTestNeedTarget>1</CLRTestNeedTarget>
+ </PropertyGroup>
+ <ItemGroup>
+ <TraitTags Include="OsSpecific" />
+ </ItemGroup>
</Project>
<ProjectReference Include="Server/CMakeLists.txt" />
<ProjectReference Include="$(TestSourceDir)Common/CoreCLRTestLibrary/CoreCLRTestLibrary.csproj" />
</ItemGroup>
+ <PropertyGroup>
+ <CLRTestNeedTarget>1</CLRTestNeedTarget>
+ </PropertyGroup>
+ <ItemGroup>
+ <TraitTags Include="OsSpecific" />
+ </ItemGroup>
</Project>
<ProjectReference Include="../../NativeServer/CMakeLists.txt" />
<ProjectReference Include="$(TestSourceDir)Common/CoreCLRTestLibrary/CoreCLRTestLibrary.csproj" />
</ItemGroup>
+ <PropertyGroup>
+ <CLRTestNeedTarget>1</CLRTestNeedTarget>
+ </PropertyGroup>
+ <ItemGroup>
+ <TraitTags Include="OsSpecific" />
+ </ItemGroup>
</Project>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
+ <PropertyGroup>
+ <CLRTestNeedTarget>1</CLRTestNeedTarget>
+ </PropertyGroup>
+ <ItemGroup>
+ <TraitTags Include="OsSpecific" />
+ </ItemGroup>
</Project>
<ProjectReference Include="../../NativeServer/CMakeLists.txt" />
<ProjectReference Include="$(TestSourceDir)Common/CoreCLRTestLibrary/CoreCLRTestLibrary.csproj" />
</ItemGroup>
+ <PropertyGroup>
+ <CLRTestNeedTarget>1</CLRTestNeedTarget>
+ </PropertyGroup>
+ <ItemGroup>
+ <TraitTags Include="OsSpecific" />
+ </ItemGroup>
</Project>
<ProjectReference Include="../../NativeServer/CMakeLists.txt" />
<ProjectReference Include="$(TestSourceDir)Common/CoreCLRTestLibrary/CoreCLRTestLibrary.csproj" />
</ItemGroup>
+ <PropertyGroup>
+ <CLRTestNeedTarget>1</CLRTestNeedTarget>
+ </PropertyGroup>
+ <ItemGroup>
+ <TraitTags Include="OsSpecific" />
+ </ItemGroup>
</Project>
<ProjectReference Include="../../NativeServer/CMakeLists.txt" />
<ProjectReference Include="$(TestSourceDir)Common/CoreCLRTestLibrary/CoreCLRTestLibrary.csproj" />
</ItemGroup>
+ <PropertyGroup>
+ <CLRTestNeedTarget>1</CLRTestNeedTarget>
+ </PropertyGroup>
+ <ItemGroup>
+ <TraitTags Include="OsSpecific" />
+ </ItemGroup>
</Project>
<ProjectReference Include="../../NativeServer/CMakeLists.txt" />
<ProjectReference Include="$(TestSourceDir)Common/CoreCLRTestLibrary/CoreCLRTestLibrary.csproj" />
</ItemGroup>
+ <PropertyGroup>
+ <CLRTestNeedTarget>1</CLRTestNeedTarget>
+ </PropertyGroup>
+ <ItemGroup>
+ <TraitTags Include="OsSpecific" />
+ </ItemGroup>
</Project>
<ProjectReference Include="$(TestSourceDir)Common/CoreCLRTestLibrary/CoreCLRTestLibrary.csproj" />
<ProjectReference Include="NetClientPrimitives.csproj" />
</ItemGroup>
+ <PropertyGroup>
+ <CLRTestNeedTarget>1</CLRTestNeedTarget>
+ </PropertyGroup>
+ <ItemGroup>
+ <TraitTags Include="OsSpecific" />
+ </ItemGroup>
</Project>
<ItemGroup>
<Compile Include="NETServer.DefaultInterfaces.il" />
</ItemGroup>
+ <PropertyGroup>
+ <CLRTestNeedTarget>1</CLRTestNeedTarget>
+ </PropertyGroup>
+ <ItemGroup>
+ <TraitTags Include="OsSpecific" />
+ </ItemGroup>
</Project>
<Compile Include="../ServerContracts/Server.Contracts.cs" />
<Compile Include="../ServerContracts/ServerGuids.cs" />
</ItemGroup>
+ <PropertyGroup>
+ <CLRTestNeedTarget>1</CLRTestNeedTarget>
+ </PropertyGroup>
+ <ItemGroup>
+ <TraitTags Include="OsSpecific" />
+ </ItemGroup>
</Project>
<Name>NETServer</Name>
</ProjectReference>
</ItemGroup>
+ <PropertyGroup>
+ <CLRTestNeedTarget>1</CLRTestNeedTarget>
+ </PropertyGroup>
+ <ItemGroup>
+ <TraitTags Include="OsSpecific" />
+ </ItemGroup>
</Project>