From 4b91016c8b13e1d008f108e8f6aaa058e79d6e7b Mon Sep 17 00:00:00 2001 From: Steve MacLean Date: Thu, 23 Apr 2020 11:09:23 -0400 Subject: [PATCH 1/6] Build coreclr targetGeneric tests separately for CI (#34790) * Build CoreClr tests separately * Build coreclr targetGeneric tests separately for CI * Build coreclr targetGeneric tests separately in runtime.yml * Distinguish generic build based on Libraries config * Build OSX release libraries when CoreCLR changed * Always use tar.gz compression for generic tests * Mark all CoreCLR Interop/COM projects OsSpecific --- .../templates/runtimes/build-test-job.yml | 63 +++++++++++++------ .../templates/runtimes/run-test-job.yml | 13 ++++ eng/pipelines/coreclr/ci.yml | 13 ++++ .../coreclr/templates/xplat-pipeline-job.yml | 3 + eng/pipelines/runtime.yml | 52 +++++++++++++++ .../Interop/COM/Activator/Activator.csproj | 6 ++ .../COM/Activator/Servers/AssemblyA.csproj | 6 ++ .../COM/Activator/Servers/AssemblyB.csproj | 6 ++ .../COM/Activator/Servers/AssemblyC.csproj | 6 ++ .../Servers/AssemblyContracts.csproj | 6 ++ .../ComWrappers/API/ComWrappersTests.csproj | 6 ++ .../GlobalInstance/GlobalInstanceTests.csproj | 6 ++ .../src/Interop/COM/Dynamic/Dynamic.csproj | 6 ++ .../Aggregation/NETClientAggregation.csproj | 6 ++ .../ConsumeNETServer/ConsumeNETServer.csproj | 6 ++ .../NETClients/Events/NETClientEvents.csproj | 6 ++ .../IDispatch/NETClientIDispatch.csproj | 6 ++ .../Licensing/NETClientLicense.csproj | 6 ++ .../Primitives/NETClientPrimitives.csproj | 6 ++ .../NETClientPrimitivesInALC.csproj | 6 ++ .../NETServer.DefaultInterfaces.ilproj | 6 ++ .../Interop/COM/NETServer/NETServer.csproj | 6 ++ .../Interop/COM/Reflection/Reflection.csproj | 6 ++ 23 files changed, 232 insertions(+), 20 deletions(-) diff --git a/eng/pipelines/common/templates/runtimes/build-test-job.yml b/eng/pipelines/common/templates/runtimes/build-test-job.yml index 00a072edc599a6..20f55bb62be797 100644 --- a/eng/pipelines/common/templates/runtimes/build-test-job.yml +++ b/eng/pipelines/common/templates/runtimes/build-test-job.yml @@ -6,6 +6,7 @@ parameters: 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 @@ -50,13 +51,24 @@ jobs: ${{ 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 @@ -120,7 +132,7 @@ jobs: # 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 @@ -129,24 +141,32 @@ jobs: 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 @@ -154,6 +174,9 @@ jobs: 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() diff --git a/eng/pipelines/common/templates/runtimes/run-test-job.yml b/eng/pipelines/common/templates/runtimes/run-test-job.yml index ba72a9aababf0c..3da5b9c1c24c7b 100644 --- a/eng/pipelines/common/templates/runtimes/run-test-job.yml +++ b/eng/pipelines/common/templates/runtimes/run-test-job.yml @@ -22,6 +22,7 @@ parameters: variables: {} pool: '' runtimeFlavorDisplayName: 'CoreCLR' + testBuildPhased : false ### Test run job @@ -57,6 +58,11 @@ jobs: - '${{ 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, '') }}: @@ -189,6 +195,13 @@ jobs: # 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)' diff --git a/eng/pipelines/coreclr/ci.yml b/eng/pipelines/coreclr/ci.yml index 4982ffd0018bd1..dd12c74053eb37 100644 --- a/eng/pipelines/coreclr/ci.yml +++ b/eng/pipelines/coreclr/ci.yml @@ -92,6 +92,16 @@ jobs: # # 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 @@ -107,6 +117,7 @@ jobs: testGroup: outerloop jobParameters: liveLibrariesBuildConfig: Release + testBuildPhase: targetSpecific # # Checked JIT test runs @@ -121,6 +132,7 @@ jobs: jobParameters: testGroup: outerloop liveLibrariesBuildConfig: Release + testBuildPhased: true # # Checked R2R test runs @@ -146,6 +158,7 @@ jobs: readyToRun: true displayNameArgs: R2R liveLibrariesBuildConfig: Release + testBuildPhased: true # # Crossgen-comparison jobs diff --git a/eng/pipelines/coreclr/templates/xplat-pipeline-job.yml b/eng/pipelines/coreclr/templates/xplat-pipeline-job.yml index c9f71a959fa61f..3a693c2ca5e093 100644 --- a/eng/pipelines/coreclr/templates/xplat-pipeline-job.yml +++ b/eng/pipelines/coreclr/templates/xplat-pipeline-job.yml @@ -78,6 +78,9 @@ 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)' diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index faa41858eb9626..dd800f4c1220fd 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -385,6 +385,25 @@ jobs: 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 # @@ -576,6 +595,20 @@ jobs: # 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 @@ -588,6 +621,7 @@ jobs: jobParameters: testGroup: innerloop liveLibrariesBuildConfig: Release + testBuildPhase: targetSpecific condition: >- or( eq(dependencies.checkout.outputs['SetPathVars_coreclr.containsChange'], true), @@ -597,6 +631,21 @@ jobs: # 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 @@ -609,6 +658,7 @@ jobs: jobParameters: testGroup: innerloop liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + testBuildPhase: targetSpecific condition: >- or( eq(dependencies.checkout.outputs['SetPathVars_coreclr.containsChange'], true), @@ -632,6 +682,7 @@ jobs: jobParameters: testGroup: innerloop liveLibrariesBuildConfig: Release + testBuildPhased: true condition: >- or( eq(dependencies.checkout.outputs['SetPathVars_coreclr.containsChange'], true), @@ -651,6 +702,7 @@ jobs: jobParameters: testGroup: innerloop liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + testBuildPhased: true condition: >- or( eq(dependencies.checkout.outputs['SetPathVars_coreclr.containsChange'], true), diff --git a/src/coreclr/tests/src/Interop/COM/Activator/Activator.csproj b/src/coreclr/tests/src/Interop/COM/Activator/Activator.csproj index a2c1c59df84485..f68f1779bb2ffc 100644 --- a/src/coreclr/tests/src/Interop/COM/Activator/Activator.csproj +++ b/src/coreclr/tests/src/Interop/COM/Activator/Activator.csproj @@ -32,4 +32,10 @@ + + 1 + + + + diff --git a/src/coreclr/tests/src/Interop/COM/Activator/Servers/AssemblyA.csproj b/src/coreclr/tests/src/Interop/COM/Activator/Servers/AssemblyA.csproj index 0450b412c21ade..25cd7bc81ba73e 100644 --- a/src/coreclr/tests/src/Interop/COM/Activator/Servers/AssemblyA.csproj +++ b/src/coreclr/tests/src/Interop/COM/Activator/Servers/AssemblyA.csproj @@ -11,4 +11,10 @@ + + 1 + + + + diff --git a/src/coreclr/tests/src/Interop/COM/Activator/Servers/AssemblyB.csproj b/src/coreclr/tests/src/Interop/COM/Activator/Servers/AssemblyB.csproj index d8ebd98a1fa21b..7736ea67c02875 100644 --- a/src/coreclr/tests/src/Interop/COM/Activator/Servers/AssemblyB.csproj +++ b/src/coreclr/tests/src/Interop/COM/Activator/Servers/AssemblyB.csproj @@ -10,4 +10,10 @@ + + 1 + + + + diff --git a/src/coreclr/tests/src/Interop/COM/Activator/Servers/AssemblyC.csproj b/src/coreclr/tests/src/Interop/COM/Activator/Servers/AssemblyC.csproj index 1a76fc4f9a10bd..fb60b2712e408e 100644 --- a/src/coreclr/tests/src/Interop/COM/Activator/Servers/AssemblyC.csproj +++ b/src/coreclr/tests/src/Interop/COM/Activator/Servers/AssemblyC.csproj @@ -6,4 +6,10 @@ + + 1 + + + + diff --git a/src/coreclr/tests/src/Interop/COM/Activator/Servers/AssemblyContracts.csproj b/src/coreclr/tests/src/Interop/COM/Activator/Servers/AssemblyContracts.csproj index d3f3b4ffcbe059..67b20eb52e4f45 100644 --- a/src/coreclr/tests/src/Interop/COM/Activator/Servers/AssemblyContracts.csproj +++ b/src/coreclr/tests/src/Interop/COM/Activator/Servers/AssemblyContracts.csproj @@ -6,4 +6,10 @@ + + 1 + + + + diff --git a/src/coreclr/tests/src/Interop/COM/ComWrappers/API/ComWrappersTests.csproj b/src/coreclr/tests/src/Interop/COM/ComWrappers/API/ComWrappersTests.csproj index 83acfa1f6fd5eb..37f14d79cb7e12 100644 --- a/src/coreclr/tests/src/Interop/COM/ComWrappers/API/ComWrappersTests.csproj +++ b/src/coreclr/tests/src/Interop/COM/ComWrappers/API/ComWrappersTests.csproj @@ -14,4 +14,10 @@ + + 1 + + + + diff --git a/src/coreclr/tests/src/Interop/COM/ComWrappers/GlobalInstance/GlobalInstanceTests.csproj b/src/coreclr/tests/src/Interop/COM/ComWrappers/GlobalInstance/GlobalInstanceTests.csproj index 1e5e14f330e2ec..205811d912c5bd 100644 --- a/src/coreclr/tests/src/Interop/COM/ComWrappers/GlobalInstance/GlobalInstanceTests.csproj +++ b/src/coreclr/tests/src/Interop/COM/ComWrappers/GlobalInstance/GlobalInstanceTests.csproj @@ -34,4 +34,10 @@ PreserveNewest + + 1 + + + + diff --git a/src/coreclr/tests/src/Interop/COM/Dynamic/Dynamic.csproj b/src/coreclr/tests/src/Interop/COM/Dynamic/Dynamic.csproj index f44514cd9035a7..324266b64650bc 100644 --- a/src/coreclr/tests/src/Interop/COM/Dynamic/Dynamic.csproj +++ b/src/coreclr/tests/src/Interop/COM/Dynamic/Dynamic.csproj @@ -22,4 +22,10 @@ + + 1 + + + + diff --git a/src/coreclr/tests/src/Interop/COM/NETClients/Aggregation/NETClientAggregation.csproj b/src/coreclr/tests/src/Interop/COM/NETClients/Aggregation/NETClientAggregation.csproj index 5c358c407ea46f..e29fe4be9da145 100644 --- a/src/coreclr/tests/src/Interop/COM/NETClients/Aggregation/NETClientAggregation.csproj +++ b/src/coreclr/tests/src/Interop/COM/NETClients/Aggregation/NETClientAggregation.csproj @@ -20,4 +20,10 @@ + + 1 + + + + diff --git a/src/coreclr/tests/src/Interop/COM/NETClients/ConsumeNETServer/ConsumeNETServer.csproj b/src/coreclr/tests/src/Interop/COM/NETClients/ConsumeNETServer/ConsumeNETServer.csproj index 5c1447eb6cfbbe..89f42a884b47fe 100644 --- a/src/coreclr/tests/src/Interop/COM/NETClients/ConsumeNETServer/ConsumeNETServer.csproj +++ b/src/coreclr/tests/src/Interop/COM/NETClients/ConsumeNETServer/ConsumeNETServer.csproj @@ -31,4 +31,10 @@ PreserveNewest + + 1 + + + + diff --git a/src/coreclr/tests/src/Interop/COM/NETClients/Events/NETClientEvents.csproj b/src/coreclr/tests/src/Interop/COM/NETClients/Events/NETClientEvents.csproj index b10cf7019a8e3a..bbd6884dc4347b 100644 --- a/src/coreclr/tests/src/Interop/COM/NETClients/Events/NETClientEvents.csproj +++ b/src/coreclr/tests/src/Interop/COM/NETClients/Events/NETClientEvents.csproj @@ -21,4 +21,10 @@ + + 1 + + + + diff --git a/src/coreclr/tests/src/Interop/COM/NETClients/IDispatch/NETClientIDispatch.csproj b/src/coreclr/tests/src/Interop/COM/NETClients/IDispatch/NETClientIDispatch.csproj index 5c358c407ea46f..e29fe4be9da145 100644 --- a/src/coreclr/tests/src/Interop/COM/NETClients/IDispatch/NETClientIDispatch.csproj +++ b/src/coreclr/tests/src/Interop/COM/NETClients/IDispatch/NETClientIDispatch.csproj @@ -20,4 +20,10 @@ + + 1 + + + + diff --git a/src/coreclr/tests/src/Interop/COM/NETClients/Licensing/NETClientLicense.csproj b/src/coreclr/tests/src/Interop/COM/NETClients/Licensing/NETClientLicense.csproj index 5c358c407ea46f..e29fe4be9da145 100644 --- a/src/coreclr/tests/src/Interop/COM/NETClients/Licensing/NETClientLicense.csproj +++ b/src/coreclr/tests/src/Interop/COM/NETClients/Licensing/NETClientLicense.csproj @@ -20,4 +20,10 @@ + + 1 + + + + diff --git a/src/coreclr/tests/src/Interop/COM/NETClients/Primitives/NETClientPrimitives.csproj b/src/coreclr/tests/src/Interop/COM/NETClients/Primitives/NETClientPrimitives.csproj index f876bed737a106..8752ff035926b8 100644 --- a/src/coreclr/tests/src/Interop/COM/NETClients/Primitives/NETClientPrimitives.csproj +++ b/src/coreclr/tests/src/Interop/COM/NETClients/Primitives/NETClientPrimitives.csproj @@ -25,4 +25,10 @@ + + 1 + + + + diff --git a/src/coreclr/tests/src/Interop/COM/NETClients/Primitives/NETClientPrimitivesInALC.csproj b/src/coreclr/tests/src/Interop/COM/NETClients/Primitives/NETClientPrimitivesInALC.csproj index 5279d5f3b16a9a..56b561365c3912 100644 --- a/src/coreclr/tests/src/Interop/COM/NETClients/Primitives/NETClientPrimitivesInALC.csproj +++ b/src/coreclr/tests/src/Interop/COM/NETClients/Primitives/NETClientPrimitivesInALC.csproj @@ -18,4 +18,10 @@ + + 1 + + + + diff --git a/src/coreclr/tests/src/Interop/COM/NETServer/NETServer.DefaultInterfaces.ilproj b/src/coreclr/tests/src/Interop/COM/NETServer/NETServer.DefaultInterfaces.ilproj index f1af2b9c4dedad..a60092bdf8f318 100644 --- a/src/coreclr/tests/src/Interop/COM/NETServer/NETServer.DefaultInterfaces.ilproj +++ b/src/coreclr/tests/src/Interop/COM/NETServer/NETServer.DefaultInterfaces.ilproj @@ -5,4 +5,10 @@ + + 1 + + + + diff --git a/src/coreclr/tests/src/Interop/COM/NETServer/NETServer.csproj b/src/coreclr/tests/src/Interop/COM/NETServer/NETServer.csproj index ebaacfc5bc2a07..72b1b2f8ea1315 100644 --- a/src/coreclr/tests/src/Interop/COM/NETServer/NETServer.csproj +++ b/src/coreclr/tests/src/Interop/COM/NETServer/NETServer.csproj @@ -8,4 +8,10 @@ + + 1 + + + + diff --git a/src/coreclr/tests/src/Interop/COM/Reflection/Reflection.csproj b/src/coreclr/tests/src/Interop/COM/Reflection/Reflection.csproj index 157be61d17bfac..186dcf064327c2 100644 --- a/src/coreclr/tests/src/Interop/COM/Reflection/Reflection.csproj +++ b/src/coreclr/tests/src/Interop/COM/Reflection/Reflection.csproj @@ -12,4 +12,10 @@ NETServer + + 1 + + + + From ca278314c717671d14eae0f2a3ddb1d8ae43f35f Mon Sep 17 00:00:00 2001 From: Steve MacLean Date: Thu, 23 Apr 2020 19:39:26 -0400 Subject: [PATCH 2/6] Fix duplicate job definition --- eng/pipelines/runtime.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index dd800f4c1220fd..bff74e66536815 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -394,15 +394,14 @@ jobs: jobTemplate: /eng/pipelines/libraries/build-job.yml buildConfig: Release platforms: - - OSX_x64 + - ${{ if ne(variables['debugOnPrReleaseOnRolling'], 'Release') }}: + - OSX_x64 jobParameters: liveRuntimeBuildConfig: release condition: >- - and( - ne(variables['debugOnPrReleaseOnRolling'], 'Release'), - or( - eq(dependencies.checkout.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isFullMatrix'], true))) + or( + eq(dependencies.checkout.outputs['SetPathVars_coreclr.containsChange'], true), + eq(variables['isFullMatrix'], true)) # # Build libraries using Mono CoreLib only From 5b2f1643cc4b157e1c2c66be60fbdf208e3bad09 Mon Sep 17 00:00:00 2001 From: Steve MacLean Date: Thu, 23 Apr 2020 20:54:42 -0400 Subject: [PATCH 3/6] Whitespace feedback --- eng/pipelines/coreclr/ci.yml | 1 + eng/pipelines/runtime.yml | 2 ++ 2 files changed, 3 insertions(+) diff --git a/eng/pipelines/coreclr/ci.yml b/eng/pipelines/coreclr/ci.yml index dd12c74053eb37..51a85c2f4558df 100644 --- a/eng/pipelines/coreclr/ci.yml +++ b/eng/pipelines/coreclr/ci.yml @@ -102,6 +102,7 @@ jobs: jobParameters: liveLibrariesBuildConfig: Release testBuildPhase: targetGeneric + - template: /eng/pipelines/common/platform-matrix.yml parameters: jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index bff74e66536815..637fcde0591011 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -608,6 +608,7 @@ jobs: 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 @@ -645,6 +646,7 @@ jobs: 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 From 58e6116bda65ad1f0c89250d8d523d69f87d512b Mon Sep 17 00:00:00 2001 From: Steve MacLean Date: Thu, 23 Apr 2020 21:31:52 -0400 Subject: [PATCH 4/6] Condition feedback Use isFullMatrix rather than debugOnPrReleaseOnRolling Simplify logic Fix another duplicate job case --- eng/pipelines/runtime.yml | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 637fcde0591011..e5a0e30e16f39d 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -394,14 +394,12 @@ jobs: jobTemplate: /eng/pipelines/libraries/build-job.yml buildConfig: Release platforms: - - ${{ if ne(variables['debugOnPrReleaseOnRolling'], 'Release') }}: + - ${{ if ne(variables['isFullMatrix'], true) }}: - OSX_x64 jobParameters: liveRuntimeBuildConfig: release condition: >- - or( - eq(dependencies.checkout.outputs['SetPathVars_coreclr.containsChange'], true), - eq(variables['isFullMatrix'], true)) + eq(dependencies.checkout.outputs['SetPathVars_coreclr.containsChange'], true) # # Build libraries using Mono CoreLib only @@ -636,16 +634,14 @@ jobs: jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml buildConfig: checked platforms: - - OSX_x64 + - ${{ if ne(variables['isFullMatrix'], true) }}: + - 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))) + eq(dependencies.checkout.outputs['SetPathVars_coreclr.containsChange'], true) - template: /eng/pipelines/common/platform-matrix.yml parameters: From 2154df3e8867105aebadd008488eb4a976df98f7 Mon Sep 17 00:00:00 2001 From: Steve MacLean Date: Thu, 23 Apr 2020 22:20:29 -0400 Subject: [PATCH 5/6] Assume debug/release libraries doesn't matter during test build --- .../templates/runtimes/build-test-job.yml | 8 ++--- .../templates/runtimes/run-test-job.yml | 4 +-- .../coreclr/templates/xplat-pipeline-job.yml | 2 +- eng/pipelines/runtime.yml | 32 +------------------ 4 files changed, 8 insertions(+), 38 deletions(-) diff --git a/eng/pipelines/common/templates/runtimes/build-test-job.yml b/eng/pipelines/common/templates/runtimes/build-test-job.yml index 20f55bb62be797..509313dfbc665f 100644 --- a/eng/pipelines/common/templates/runtimes/build-test-job.yml +++ b/eng/pipelines/common/templates/runtimes/build-test-job.yml @@ -63,12 +63,12 @@ jobs: ${{ 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 }}' + name: '${{ parameters.runtimeFlavor }}_common_test_build_p0_AnyOS_AnyCPU_${{ parameters.buildConfig }}' + displayName: '${{ parameters.runtimeFlavorDisplayName }} Common Pri0 Test Build AnyOS AnyCPU ${{ parameters.buildConfig }}' ${{ if ne(parameters.testGroup, 'innerloop') }}: ${{ 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 }}' + name: '${{ parameters.runtimeFlavor }}_common_test_build_p1_AnyOS_AnyCPU_${{ parameters.buildConfig }}' + displayName: '${{ parameters.runtimeFlavorDisplayName }} Common Pri1 Test Build AnyOS AnyCPU ${{ parameters.buildConfig }}' # Since the condition is being altered, merge the default with the additional conditions. # See https://docs.microsoft.com/azure/devops/pipelines/process/conditions diff --git a/eng/pipelines/common/templates/runtimes/run-test-job.yml b/eng/pipelines/common/templates/runtimes/run-test-job.yml index 3da5b9c1c24c7b..0010f7624d6b28 100644 --- a/eng/pipelines/common/templates/runtimes/run-test-job.yml +++ b/eng/pipelines/common/templates/runtimes/run-test-job.yml @@ -60,9 +60,9 @@ jobs: - '${{ 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 }}' + - '${{ parameters.runtimeFlavor }}_common_test_build_p0_AnyOS_AnyCPU_${{parameters.buildConfig }}' - ${{ if ne(parameters.testGroup, 'innerloop') }}: - - '${{ parameters.runtimeFlavor }}_common_test_build_p1_AnyOS_AnyCPU_${{parameters.buildConfig }}_Lib${{ parameters.liveLibrariesBuildConfig }}' + - '${{ parameters.runtimeFlavor }}_common_test_build_p1_AnyOS_AnyCPU_${{parameters.buildConfig }}' - ${{ 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, '') }}: diff --git a/eng/pipelines/coreclr/templates/xplat-pipeline-job.yml b/eng/pipelines/coreclr/templates/xplat-pipeline-job.yml index 3a693c2ca5e093..3043b2e4b41839 100644 --- a/eng/pipelines/coreclr/templates/xplat-pipeline-job.yml +++ b/eng/pipelines/coreclr/templates/xplat-pipeline-job.yml @@ -79,7 +79,7 @@ jobs: value: 'CoreLib_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)' - name: managedGenericTestArtifactName - value: 'CoreCLRManagedTestArtifacts_AnyOS_AnyCPU_$(buildConfig)_Lib${{ parameters.liveLibrariesBuildConfig }}' + value: 'CoreCLRManagedTestArtifacts_AnyOS_AnyCPU_$(buildConfig)' - name: managedTestArtifactName value: 'CoreCLRManagedTestArtifacts_${{ parameters.managedTestBuildOsGroup }}${{ parameters.managedTestBuildOsSubgroup }}_$(archType)_$(buildConfig)' diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index e5a0e30e16f39d..721e4c5aa2f87c 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -385,22 +385,6 @@ jobs: 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: - - ${{ if ne(variables['isFullMatrix'], true) }}: - - OSX_x64 - jobParameters: - liveRuntimeBuildConfig: release - condition: >- - eq(dependencies.checkout.outputs['SetPathVars_coreclr.containsChange'], true) - # # Build libraries using Mono CoreLib only # @@ -600,7 +584,7 @@ jobs: - OSX_x64 jobParameters: testGroup: innerloop - liveLibrariesBuildConfig: Release + liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} testBuildPhase: targetGeneric condition: >- or( @@ -629,20 +613,6 @@ jobs: # 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: - - ${{ if ne(variables['isFullMatrix'], true) }}: - - OSX_x64 - jobParameters: - testGroup: innerloop - liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - testBuildPhase: targetGeneric - condition: >- - eq(dependencies.checkout.outputs['SetPathVars_coreclr.containsChange'], true) - - template: /eng/pipelines/common/platform-matrix.yml parameters: jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml From e76acf92b0a81059c6adf3add8638dc549a297d9 Mon Sep 17 00:00:00 2001 From: Steve MacLean Date: Fri, 24 Apr 2020 17:16:07 -0400 Subject: [PATCH 6/6] Add comments --- eng/pipelines/common/templates/runtimes/run-test-job.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/eng/pipelines/common/templates/runtimes/run-test-job.yml b/eng/pipelines/common/templates/runtimes/run-test-job.yml index 0010f7624d6b28..2850607fda033f 100644 --- a/eng/pipelines/common/templates/runtimes/run-test-job.yml +++ b/eng/pipelines/common/templates/runtimes/run-test-job.yml @@ -22,6 +22,9 @@ parameters: variables: {} pool: '' runtimeFlavorDisplayName: 'CoreCLR' + # If true, tests were built in two phases + # We will depend on both the TargetGeneric tests which are for AnyOS AnyCPU + # as well as the TargetSpecific test. Both sets of tests will be run testBuildPhased : false ### Test run job @@ -59,6 +62,7 @@ jobs: - ${{ if ne(parameters.testGroup, 'innerloop') }}: - '${{ parameters.runtimeFlavor }}_common_test_build_p1_${{ parameters.managedTestBuildOsGroup }}${{ parameters.managedTestBuildOsSubgroup }}_${{ parameters.archType }}_${{parameters.buildConfig }}' - ${{ if eq(parameters.testBuildPhased, true) }}: + # Also depend on AnyOS AnyCPU tests - ${{ if eq(parameters.testGroup, 'innerloop') }}: - '${{ parameters.runtimeFlavor }}_common_test_build_p0_AnyOS_AnyCPU_${{parameters.buildConfig }}' - ${{ if ne(parameters.testGroup, 'innerloop') }}: @@ -195,6 +199,7 @@ jobs: # Download and unzip managed test artifacts - ${{ if ne(parameters.corefxTests, true) }}: + # First download and unzip AnyOS AnyCPU test (if needed) - ${{ if eq(parameters.testBuildPhased, true) }}: - template: /eng/pipelines/common/download-artifact-step.yml parameters: @@ -202,6 +207,8 @@ jobs: artifactFileName: '$(managedGenericTestArtifactName).tar.gz' artifactName: '$(managedGenericTestArtifactName)' displayName: 'generic managed test artifacts' + + # Download and unzip target specific tests - template: /eng/pipelines/common/download-artifact-step.yml parameters: unpackFolder: '$(managedTestArtifactRootFolderPath)'