From 58471ac647726af2d180bb0895090aa33f5a8bf5 Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Mon, 28 Aug 2023 12:39:06 -0700 Subject: [PATCH 01/45] New beginning for the TestReadyToRun for the libraries. --- eng/pipelines/common/platform-matrix.yml | 2 ++ .../libraries/build-for-test-ready-to-run.yml | 21 +++++++++++++++++++ eng/pipelines/runtime.yml | 17 +++++++++++++++ .../Microsoft.NET.CrossGen.props | 4 ++-- 4 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 eng/pipelines/libraries/build-for-test-ready-to-run.yml diff --git a/eng/pipelines/common/platform-matrix.yml b/eng/pipelines/common/platform-matrix.yml index 8399c82ecd769..404e08a7ef89c 100644 --- a/eng/pipelines/common/platform-matrix.yml +++ b/eng/pipelines/common/platform-matrix.yml @@ -25,6 +25,7 @@ parameters: jobs: # Linux arm + - ${{ if or(containsValue(parameters.platforms, 'linux_arm'), in(parameters.platformGroup, 'all', 'gcstress')) }}: - template: xplat-setup.yml parameters: @@ -45,6 +46,7 @@ jobs: ${{ insert }}: ${{ parameters.jobParameters }} # Linux armv6 + - ${{ if containsValue(parameters.platforms, 'linux_armv6') }}: - template: xplat-setup.yml parameters: diff --git a/eng/pipelines/libraries/build-for-test-ready-to-run.yml b/eng/pipelines/libraries/build-for-test-ready-to-run.yml new file mode 100644 index 0000000000000..30fc435fb0b95 --- /dev/null +++ b/eng/pipelines/libraries/build-for-test-ready-to-run.yml @@ -0,0 +1,21 @@ +parameters: + archType: '' + coreclrConfig: '' + libsAndPacksConfig: '' + osGroup: '' + osSubgroup: '' + +jobs: + - template: /eng/pipelines/common/global-build-job.yml + parameters: + archType: ${{ parameters.archType }} + + buildArgs: -s clr+libs+packs + -c ${{ parameters.libsAndPacksConfig }} + -rc ${{ parameters.coreclrConfig }} + buildConfig: ${{ parameters.coreclrConfig }} + + nameSuffix: TestReadyToRun_Libraries + osGroup: ${{ parameters.osGroup }} + osSubgroup: ${{ parameters.osSubgroup }} + timeoutInMinutes: 120 diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 0f1f9610c6034..7c64677867170 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -336,6 +336,23 @@ extends: eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), eq(variables['isFullMatrix'], true)) + # + # Libraries TestReadyToRun + # NOTE: This is here right now only for easier testing during the development + # process. Will be moved to crossgen2.yml once it's confirmed to work + # work as expected, and is ready for review. + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/build-for-test-ready-to-run.yml + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + buildConfig: Checked + platforms: + - linux_x64 + jobParameters: + coreclrConfig: Checked + libsAndPacksConfig: Release + # Build and test clr tools - template: /eng/pipelines/common/platform-matrix.yml parameters: diff --git a/src/tasks/Crossgen2Tasks/ShimFilesSimulatingLogicInSdkRepo/Microsoft.NET.CrossGen.props b/src/tasks/Crossgen2Tasks/ShimFilesSimulatingLogicInSdkRepo/Microsoft.NET.CrossGen.props index 99dab14b36005..cddeb5aa34fff 100644 --- a/src/tasks/Crossgen2Tasks/ShimFilesSimulatingLogicInSdkRepo/Microsoft.NET.CrossGen.props +++ b/src/tasks/Crossgen2Tasks/ShimFilesSimulatingLogicInSdkRepo/Microsoft.NET.CrossGen.props @@ -1,6 +1,6 @@ + + + + + + + + + + From ce0beb71c021fc5f84788a26432de1266aa788ba Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Tue, 5 Sep 2023 11:27:47 -0700 Subject: [PATCH 11/45] Changed 'TargetFrameworks' to use 'net8.0' instead of '$(NetCoreAppCurrent)' when TestReadyToRun is present, because we currently don't have 'net9.0' packages. --- .../System.Runtime/tests/System.Runtime.Tests.csproj | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/libraries/System.Runtime/tests/System.Runtime.Tests.csproj b/src/libraries/System.Runtime/tests/System.Runtime.Tests.csproj index f4783e4c3ab85..a75d47f78f948 100644 --- a/src/libraries/System.Runtime/tests/System.Runtime.Tests.csproj +++ b/src/libraries/System.Runtime/tests/System.Runtime.Tests.csproj @@ -1,6 +1,16 @@  $(NetCoreAppCurrent)-windows;$(NetCoreAppCurrent)-unix;$(NetCoreAppCurrent)-browser + + net8.0-windows;net8.0-unix;net8.0-browser + $(DefineConstants);TARGET_BROWSER true $(NoWarn),1718,SYSLIB0013 From 084dcd2d2597d69193e4b44794bafb134cadeaee Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Tue, 5 Sep 2023 14:25:59 -0700 Subject: [PATCH 12/45] CI versioning nonsense again... --- .../System.Runtime/tests/System.Runtime.Tests.csproj | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/libraries/System.Runtime/tests/System.Runtime.Tests.csproj b/src/libraries/System.Runtime/tests/System.Runtime.Tests.csproj index a75d47f78f948..f4783e4c3ab85 100644 --- a/src/libraries/System.Runtime/tests/System.Runtime.Tests.csproj +++ b/src/libraries/System.Runtime/tests/System.Runtime.Tests.csproj @@ -1,16 +1,6 @@  $(NetCoreAppCurrent)-windows;$(NetCoreAppCurrent)-unix;$(NetCoreAppCurrent)-browser - - net8.0-windows;net8.0-unix;net8.0-browser - $(DefineConstants);TARGET_BROWSER true $(NoWarn),1718,SYSLIB0013 From 7a98a592579ac1699e2f7fe3727a1d57d24b03ef Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Tue, 19 Sep 2023 08:56:13 -0700 Subject: [PATCH 13/45] Still does not work. Just saving my changes. --- Build.proj | 1 + eng/targetingpacks.targets | 4 ++++ src/libraries/System.Runtime/Directory.Build.props | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Build.proj b/Build.proj index baa240685ae5d..244811651fb1e 100644 --- a/Build.proj +++ b/Build.proj @@ -9,6 +9,7 @@ + diff --git a/eng/targetingpacks.targets b/eng/targetingpacks.targets index 2c34b5817b995..cf968f7f6227d 100644 --- a/eng/targetingpacks.targets +++ b/eng/targetingpacks.targets @@ -148,6 +148,10 @@ + + diff --git a/src/libraries/System.Runtime/Directory.Build.props b/src/libraries/System.Runtime/Directory.Build.props index 63f02a0f817ef..e8d65546d0c80 100644 --- a/src/libraries/System.Runtime/Directory.Build.props +++ b/src/libraries/System.Runtime/Directory.Build.props @@ -3,4 +3,4 @@ Microsoft - \ No newline at end of file + From baf03ff32caea60a90ded1f5b2ff4dc29196ea21 Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Fri, 20 Oct 2023 11:11:06 -0700 Subject: [PATCH 14/45] Updated the 'extraSteps' and 'extraStepsTemplate' to the new 'postBuildSteps' system. --- .../libraries/build-for-test-ready-to-run.yml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/eng/pipelines/libraries/build-for-test-ready-to-run.yml b/eng/pipelines/libraries/build-for-test-ready-to-run.yml index 8ec65ef661d58..166f1e6819e4b 100644 --- a/eng/pipelines/libraries/build-for-test-ready-to-run.yml +++ b/eng/pipelines/libraries/build-for-test-ready-to-run.yml @@ -37,9 +37,11 @@ jobs: timeoutInMinutes: 120 variables: ${{ parameters.variables }} - extraStepsTemplate: '/eng/pipelines/libraries/run-test-ready-to-run.yml' - extraStepsParameters: - archType: ${{ parameters.archType }} - buildConfig: ${{ parameters.buildConfig }} - osGroup: ${{ parameters.osGroup }} - variables: ${{ parameters.variables }} + postBuildSteps: + - template: '/eng/pipelines/libraries/run-test-ready-to-run.yml' + parameters: + archType: ${{ parameters.archType }} + buildConfig: ${{ parameters.buildConfig }} + osGroup: ${{ parameters.osGroup }} + variables: ${{ parameters.variables }} + From bd083f9fc1e99355c2cbd86bfe9af3a6e24a4674 Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Fri, 20 Oct 2023 13:09:20 -0700 Subject: [PATCH 15/45] Reenabled all the pipelines and moved the TestReadyToRun one to the Crossgen2 suite, as was initially decided. --- eng/pipelines/coreclr/crossgen2.yml | 10 + eng/pipelines/runtime.yml | 3126 +++++++++++++-------------- 2 files changed, 1568 insertions(+), 1568 deletions(-) diff --git a/eng/pipelines/coreclr/crossgen2.yml b/eng/pipelines/coreclr/crossgen2.yml index 1448474004cd8..1f149f45f92ea 100644 --- a/eng/pipelines/coreclr/crossgen2.yml +++ b/eng/pipelines/coreclr/crossgen2.yml @@ -57,6 +57,16 @@ extends: displayNameArgs: R2R_CG2 liveLibrariesBuildConfig: Release + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/build-for-test-ready-to-run.yml + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + buildConfig: Release + platforms: + - linux_x64 + - osx_x64 + - windows_x64 + # Run pri0 tests with hot/cold splitting enabled (only supported on x64 at the moment) # TODO: test on arm64 once supported - template: /eng/pipelines/common/platform-matrix.yml diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 8c218acb0f734..fc8b0ad617ebc 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -66,1580 +66,1570 @@ extends: - ${{ if eq(variables.dependOnEvaluatePaths, true) }}: - template: /eng/pipelines/common/evaluate-default-paths.yml + # + # Build CoreCLR checked + # Only when CoreCLR is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + buildConfig: checked + platforms: + - linux_x64 + - linux_arm + - linux_arm64 + - linux_riscv64 + - linux_musl_arm + - linux_musl_arm64 + - linux_musl_x64 + - osx_arm64 + - windows_x86 + - windows_x64 + - windows_arm64 + jobParameters: + testGroup: innerloop + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build the whole product using GNU compiler toolchain + # When CoreCLR, Mono, Libraries, Installer and src/tests are changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: checked + platforms: + - gcc_linux_x64 + jobParameters: + testGroup: innerloop + nameSuffix: Native_GCC + buildArgs: -s clr.native+libs.native+mono+host.native -c $(_BuildConfig) -gcc + postBuildSteps: + - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests.yml + parameters: + testBuildArgs: skipmanaged skipgeneratelayout skiprestorepackages -gcc + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build CoreCLR osx_x64 checked + # Only when CoreCLR or Libraries is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + buildConfig: checked + platforms: + - osx_x64 + jobParameters: + testGroup: innerloop + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build CoreCLR release + # Always as they are needed by Installer and we always build and test the Installer. + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml + buildConfig: release + platforms: + - osx_arm64 + - osx_x64 + - linux_x64 + - linux_arm + - linux_arm64 + - linux_musl_x64 + - linux_musl_arm + - linux_musl_arm64 + - windows_x64 + - windows_x86 + - windows_arm64 + - freebsd_x64 + jobParameters: + testGroup: innerloop + # Mono/runtimetests also need this, but skip for wasm + condition: + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build CoreCLR Formatting Job + # Only when CoreCLR is changed, and only in the 'main' branch (no release branches; + # both Rolling and PR builds). + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml + platforms: + - linux_x64 + - windows_x64 + jobParameters: + condition: >- + and( + or( + eq(variables['Build.SourceBranchName'], 'main'), + eq(variables['System.PullRequest.TargetBranch'], 'main')), + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_jit.containsChange'], true), + eq(variables['isRollingBuild'], true))) + + # + # Build CoreCLR with no R2R + # - template: /eng/pipelines/common/platform-matrix.yml parameters: - jobTemplate: /eng/pipelines/libraries/build-for-test-ready-to-run.yml + jobTemplate: /eng/pipelines/common/global-build-job.yml helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + buildConfig: checked + runtimeFlavor: coreclr + platforms: + - linux_x86 + jobParameters: + testScope: innerloop + nameSuffix: CoreCLR_NoR2R + buildArgs: -s clr.runtime+clr.jit+clr.iltools+clr.spmi+clr.corelib -c $(_BuildConfig) + timeoutInMinutes: 120 + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build CoreCLR as a non-portable build + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + buildConfig: checked + runtimeFlavor: coreclr + platforms: + - tizen_armel + jobParameters: + testScope: innerloop + nameSuffix: CoreCLR_NonPortable + buildArgs: -s clr.native+clr.tools+clr.corelib+clr.nativecorelib+clr.aot+clr.packages -c $(_BuildConfig) /p:PortableBuild=false + timeoutInMinutes: 120 + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # CoreCLR NativeAOT debug build and smoke tests + # Only when CoreCLR is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + buildConfig: Debug + platforms: + - linux_x64 + - windows_x64 + variables: + - name: timeoutPerTestInMinutes + value: 60 + - name: timeoutPerTestCollectionInMinutes + value: 180 + jobParameters: + timeoutInMinutes: 120 + nameSuffix: NativeAOT + buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release + postBuildSteps: + - template: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + parameters: + creator: dotnet-bot + testBuildArgs: nativeaot tree nativeaot + liveLibrariesBuildConfig: Release + testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + extraVariablesTemplates: + - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + parameters: + testGroup: innerloop + liveLibrariesBuildConfig: Release + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # CoreCLR NativeAOT checked build and smoke tests + # Only when CoreCLR is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + buildConfig: Checked + platforms: + - windows_x64 + variables: + - name: timeoutPerTestInMinutes + value: 60 + - name: timeoutPerTestCollectionInMinutes + value: 180 + jobParameters: + timeoutInMinutes: 180 + nameSuffix: NativeAOT + buildArgs: -s clr.aot+host.native+libs.native+libs.sfx -rc $(_BuildConfig) -lc Release -hc Release + postBuildSteps: + - template: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + parameters: + creator: dotnet-bot + testBuildArgs: 'nativeaot tree ";nativeaot;Loader;Interop;" /p:BuildNativeAotFrameworkObjects=true' + liveLibrariesBuildConfig: Release + testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + extraVariablesTemplates: + - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + parameters: + testGroup: innerloop + liveLibrariesBuildConfig: Release + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # CoreCLR NativeAOT release build and smoke tests + # Only when CoreCLR is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml buildConfig: Release platforms: + - linux_x64 + - windows_x64 + - osx_x64 + - linux_arm64 + - windows_arm64 + - osx_arm64 + variables: + - name: timeoutPerTestInMinutes + value: 60 + - name: timeoutPerTestCollectionInMinutes + value: 180 + jobParameters: + testGroup: innerloop + timeoutInMinutes: 120 + nameSuffix: NativeAOT + buildArgs: -s clr.aot+host.native+libs+tools.illink -c $(_BuildConfig) -rc $(_BuildConfig) -lc Release -hc Release + postBuildSteps: + - template: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml + parameters: + creator: dotnet-bot + testBuildArgs: 'nativeaot tree ";nativeaot;tracing/eventpipe/providervalidation;"' + liveLibrariesBuildConfig: Release + testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + extraVariablesTemplates: + - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + parameters: + testGroup: innerloop + liveLibrariesBuildConfig: Release + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # CoreCLR NativeAOT release build and libraries tests + # Only when CoreCLR or library is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + buildConfig: Release + platforms: + - windows_arm64 + - linux_arm64 + - osx_arm64 + jobParameters: + testGroup: innerloop + isSingleFile: true + nameSuffix: NativeAOT_Libraries + buildArgs: -s clr.aot+host.native+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true + timeoutInMinutes: 240 # Doesn't actually take long, but we've seen the ARM64 Helix queue often get backlogged for 2+ hours + # extra steps, run tests + postBuildSteps: + - template: /eng/pipelines/libraries/helix.yml + parameters: + creator: dotnet-bot + testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # Build and test clr tools + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: checked + platforms: + - linux_x64 + jobParameters: + timeoutInMinutes: 120 + nameSuffix: CLR_Tools_Tests + buildArgs: -s clr.aot+clr.iltools+libs.sfx+clr.toolstests -c $(_BuildConfig) -test + enablePublishTestResults: true + testResultsFormat: 'xunit' + # We want to run AOT tests when illink changes because there's share code and tests from illink which are used by AOT + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true), + eq(variables['isRollingBuild'], true)) + # + # Build CrossDacs + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: release + platforms: + - windows_x64 + variables: + - name: _archParameter + value: -arch x64,x86,arm,arm64 + jobParameters: + buildArgs: -s linuxdac+alpinedac -c Checked,$(_BuildConfig) + nameSuffix: CrossDac + isOfficialBuild: false + timeoutInMinutes: 60 + postBuildSteps: + - publish: $(Build.SourcesDirectory)/artifacts/bin/coreclr + displayName: Publish CrossDacs for diagnostics + artifact: CoreCLRCrossDacArtifacts + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # Build Mono AOT offset headers once, for consumption elsewhere + # Only when mono changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml + buildConfig: release + platforms: + - android_x64 + - browser_wasm + - tvos_arm64 + - ios_arm64 + - maccatalyst_x64 + jobParameters: + isOfficialBuild: false + # needed by crossaot + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # Build the whole product using Mono runtime + # Only when libraries, mono or installer are changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + runtimeFlavor: mono + platforms: + - tvossimulator_x64 + - linux_arm + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono + buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - linux_musl_x64 + - linux_riscv64 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono + buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # WebAssembly legs + # + - template: /eng/pipelines/common/templates/wasm-library-tests.yml + parameters: + platforms: + - browser_wasm + alwaysRun: ${{ variables.isRollingBuild }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + scenarios: + - normal + - WasmTestOnBrowser + + - template: /eng/pipelines/common/templates/wasm-library-tests.yml + parameters: + platforms: + - browser_wasm_win + alwaysRun: ${{ variables.isRollingBuild }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + scenarios: + - WasmTestOnBrowser + + # EAT Library tests - only run on linux + - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + parameters: + platforms: + - browser_wasm + nameSuffix: _EAT + runAOT: false + shouldRunSmokeOnly: false + alwaysRun: ${{ variables.isRollingBuild }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # AOT Library tests + - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + parameters: + platforms: + - browser_wasm + nameSuffix: _AOT + runAOT: true + shouldRunSmokeOnly: true + alwaysRun: ${{ variables.isRollingBuild }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + - template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml + parameters: + platforms: + - browser_wasm_win + nameSuffix: _AOT + runAOT: true + shouldRunSmokeOnly: true + alwaysRun: ${{ variables.isRollingBuild }} + + # For Wasm.Build.Tests - runtime pack builds + - template: /eng/pipelines/common/templates/wasm-build-only.yml + parameters: + platforms: + - browser_wasm + - browser_wasm_win + condition: or(eq(variables.isRollingBuild, true), eq(variables.wasmSingleThreadedBuildOnlyNeededOnDefaultPipeline, true)) + nameSuffix: SingleThreaded + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + publishArtifactsForWorkload: true + publishWBT: true + + - template: /eng/pipelines/common/templates/wasm-build-only.yml + parameters: + platforms: + - browser_wasm + - browser_wasm_win + condition: or(eq(variables.isRollingBuild, true), eq(variables.wasmSingleThreadedBuildOnlyNeededOnDefaultPipeline, true)) + nameSuffix: MultiThreaded + extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:WasmEnableThreads=true /p:_WasmPThreadPoolSize=8 /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + publishArtifactsForWorkload: true + publishWBT: false + + # Browser Wasm.Build.Tests + - template: /eng/pipelines/common/templates/browser-wasm-build-tests.yml + parameters: + platforms: + - browser_wasm + - browser_wasm_win + alwaysRun: ${{ variables.isRollingBuild }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # Wasm Debugger tests + - template: /eng/pipelines/common/templates/wasm-debugger-tests.yml + parameters: + platforms: + - browser_wasm + - browser_wasm_win + alwaysRun: ${{ variables.isRollingBuild }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # Wasm runtime tests + - template: /eng/pipelines/common/templates/wasm-runtime-tests.yml + parameters: + platforms: + - browser_wasm + alwaysRun: ${{ variables.isRollingBuild }} + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + + # Build and Smoke Tests only - Wasm Threading Legs + - template: /eng/pipelines/common/templates/wasm-library-tests.yml + parameters: + platforms: + - browser_wasm + nameSuffix: _Threading_Smoke + extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:_WasmPThreadPoolSize=8 /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + shouldRunSmokeOnly: true + alwaysRun: ${{ variables.isRollingBuild }} + scenarios: + - WasmTestOnBrowser + + # WASI/WASM + + - template: /eng/pipelines/common/templates/wasm-library-tests.yml + parameters: + platforms: + - wasi_wasm + - wasi_wasm_win + nameSuffix: '_Smoke' + extraBuildArgs: /p:EnableAggressiveTrimming=true /p:RunWasmSamples=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + shouldContinueOnError: true + shouldRunSmokeOnly: true + alwaysRun: ${{ variables.isRollingBuild }} + scenarios: + - normal + + - template: /eng/pipelines/common/templates/simple-wasm-build-tests.yml + parameters: + platforms: + - wasi_wasm + - wasi_wasm_win + extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + alwaysRun: ${{ variables.isRollingBuild }} + + # + # Android devices + # Build the whole product using Mono and run libraries tests + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - android_arm + - android_arm64 + variables: + # map dependencies variables to local variables + - name: librariesContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + - name: monoContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono + buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:EnableAdditionalTimezoneChecks=true + timeoutInMinutes: 480 + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + # extra steps, run tests + postBuildSteps: + - template: /eng/pipelines/libraries/helix.yml + parameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_$(_BuildConfig) + condition: >- + or( + eq(variables['librariesContainsChange'], true), + eq(variables['monoContainsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size + # Build the whole product using Mono and run libraries tests + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - ios_arm64 + - tvos_arm64 + variables: + # map dependencies variables to local variables + - name: librariesContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + - name: monoContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono + buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true + timeoutInMinutes: 480 + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + # extra steps, run tests + postBuildSteps: + - template: /eng/pipelines/libraries/helix.yml + parameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_$(_BuildConfig) + extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true + condition: >- + or( + eq(variables['librariesContainsChange'], true), + eq(variables['monoContainsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # iOS/tvOS devices + # Build the whole product using Native AOT and run libraries tests + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: coreclr + platforms: + - ios_arm64 + - tvos_arm64 + variables: + # map dependencies variables to local variables + - name: librariesContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + - name: coreclrContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'] ] + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_NativeAOT + buildArgs: --cross -s clr.alljits+clr.tools+clr.nativeaotruntime+clr.nativeaotlibs+libs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=- /p:BuildTestsOnHelix=true /p:UseNativeAOTRuntime=true /p:RunAOTCompilation=false /p:ContinuousIntegrationBuild=true + timeoutInMinutes: 180 + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + # extra steps, run tests + postBuildSteps: + - template: /eng/pipelines/libraries/helix.yml + parameters: + creator: dotnet-bot + testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true + condition: >- + or( + eq(variables['librariesContainsChange'], true), + eq(variables['coreclrContainsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # MacCatalyst interp - requires AOT Compilation and Interp flags + # Build the whole product using Mono and run libraries tests + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - maccatalyst_x64 + - ${{ if eq(variables['isRollingBuild'], true) }}: + - maccatalyst_arm64 + variables: + # map dependencies variables to local variables + - name: librariesContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + - name: monoContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono + buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildDarwinFrameworks=true + timeoutInMinutes: 180 + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + # extra steps, run tests + postBuildSteps: + - template: /eng/pipelines/libraries/helix.yml + parameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_$(_BuildConfig) + condition: >- + or( + eq(variables['librariesContainsChange'], true), + eq(variables['monoContainsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build Mono and Installer on LLVMJIT mode + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - osx_x64 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono_LLVMJIT + buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + runtimeFlavor: mono + platforms: + - linux_x64 + - linux_arm64 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono_LLVMJIT + buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build Mono and Installer on LLVMAOT mode + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - linux_x64 + - linux_arm64 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono_LLVMAOT + buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + /p:MonoEnableLLVM=true /p:MonoAOTEnableLLVM=true /p:MonoBundleLLVMOptimizer=true + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + runtimeFlavor: mono + platforms: + - osx_x64 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono_LLVMAOT + buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + /p:MonoEnableLLVM=true /p:MonoAOTEnableLLVM=true /p:MonoBundleLLVMOptimizer=true + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build Mono debug + # Only when mono changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/build-job.yml + runtimeFlavor: mono + buildConfig: debug + platforms: + - osx_x64 + - osx_arm64 + - linux_x64 + - linux_arm64 + # - linux_musl_arm64 + - windows_x64 + - windows_x86 + # - windows_arm64 + jobParameters: + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build Mono release AOT cross-compilers + # Only when mono changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/build-job.yml + runtimeFlavor: mono + buildConfig: release + platforms: + - linux_x64 + - linux_musl_x64 + - linux_arm64 + - linux_musl_arm64 + - windows_arm64 + - windows_x64 + jobParameters: + runtimeVariant: crossaot + dependsOn: + - mono_android_offsets + - mono_browser_offsets + monoCrossAOTTargetOS: + - android + - browser + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/build-job.yml + runtimeFlavor: mono + buildConfig: release + platforms: + - osx_x64 + - osx_arm64 + jobParameters: + runtimeVariant: crossaot + dependsOn: + - mono_android_offsets + - mono_browser_offsets + - mono_tvos_offsets + - mono_ios_offsets + - mono_maccatalyst_offsets + monoCrossAOTTargetOS: + - android + - browser + - tvos + - ios + - maccatalyst + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build Mono release + # Only when libraries or mono changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/build-job.yml + runtimeFlavor: mono + buildConfig: release + platforms: + - linux_x64 + # - linux_musl_arm64 + - windows_x64 + - windows_x86 + # - windows_arm64 + jobParameters: + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build Mono release + # Only when libraries, mono, or the runtime tests changed + # Currently only these architectures are needed for the runtime tests. + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/build-job.yml + runtimeFlavor: mono + buildConfig: release + platforms: + - osx_x64 + - linux_arm64 + jobParameters: + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build Mono release with LLVM AOT + # Only when mono, or the runtime tests changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/build-job.yml + runtimeFlavor: mono + buildConfig: release + platforms: + - linux_x64 + - linux_arm64 + jobParameters: + runtimeVariant: llvmaot + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build libraries using live CoreLib + # These set of libraries are built always no matter what changed + # The reason for that is because Corelib and Installer needs it and + # These are part of the test matrix for Libraries changes. + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/build-job.yml + buildConfig: Release + platforms: + - linux_arm + - linux_musl_arm + - linux_musl_arm64 + - windows_arm64 + - windows_x86 + jobParameters: + condition: + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/build-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + platforms: + - linux_arm64 + - linux_musl_x64 + - linux_x64 + - osx_arm64 + - osx_x64 + - windows_x64 + - freebsd_x64 + jobParameters: + testScope: innerloop + condition: + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Libraries debug build that only runs when coreclr is changed + # Only do this on PR builds since we use the Release builds for these test runs in CI + # and those are already built above + # + - ${{ if eq(variables['isRollingBuild'], false) }}: + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/build-job.yml + buildConfig: Debug + platforms: + - windows_x86 + jobParameters: + condition: >- + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) + + # + # Libraries release build that only runs when coreclr is changed in PRs + # We need these for checked coreclr + release libraries tests runs. + # + - ${{ if eq(variables['isRollingBuild'], false) }}: + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/build-job.yml + buildConfig: Release + platforms: - linux_x64 + - windows_x64 + jobParameters: + condition: >- + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) + + # + # Build and test libraries for .NET Framework + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: Release + platforms: + - windows_x86 + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + jobParameters: + framework: net48 + buildArgs: -s tools+libs+libs.tests -framework net48 -c $(_BuildConfig) -testscope innerloop /p:ArchiveTests=true + nameSuffix: Libraries_NET48 + timeoutInMinutes: 150 + postBuildSteps: + - template: /eng/pipelines/libraries/helix.yml + parameters: + creator: dotnet-bot + testRunNamePrefixSuffix: NET48_$(_BuildConfig) + extraHelixArguments: /p:BuildTargetFramework=net48 + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build and test libraries AllConfigurations + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + platforms: + - windows_x64 + jobParameters: + buildArgs: -test -s tools+libs+libs.tests -allConfigurations -c $(_BuildConfig) /p:TestAssemblies=false /p:TestPackages=true + nameSuffix: Libraries_AllConfigurations + timeoutInMinutes: 150 + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Installer Build and Test + # These are always built since they only take like 15 minutes + # we expect these to be done before we finish libraries or coreclr testing. + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/installer/jobs/build-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + platforms: + - linux_musl_arm + - linux_musl_arm64 + - windows_x86 + - windows_arm64 + - linux_arm + jobParameters: + liveRuntimeBuildConfig: release + liveLibrariesBuildConfig: Release + runOnlyIfDependenciesSucceeded: true + condition: + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/installer/jobs/build-job.yml + buildConfig: Release + platforms: + - osx_arm64 - osx_x64 + - linux_x64 + - linux_arm64 + - linux_musl_x64 - windows_x64 + - freebsd_x64 + jobParameters: + liveRuntimeBuildConfig: release + liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + runOnlyIfDependenciesSucceeded: true + condition: + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # 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: + - CoreClrTestBuildHost # Either osx_x64 or linux_x64 + jobParameters: + testGroup: innerloop + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # CoreCLR Test executions using live libraries + # Only when CoreCLR is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + buildConfig: checked + platforms: + - linux_arm + - windows_x86 + - windows_arm64 + helixQueueGroup: pr + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + jobParameters: + testGroup: innerloop + liveLibrariesBuildConfig: Release + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + buildConfig: checked + platforms: + - osx_x64 + - linux_x64 + - linux_arm64 + - windows_x64 + helixQueueGroup: pr + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + jobParameters: + testGroup: innerloop + liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + buildConfig: checked + platforms: + - osx_arm64 + helixQueueGroup: pr + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + jobParameters: + testGroup: innerloop + liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_AppleSilicon.containsChange'], true), + eq(variables['isRollingBuild'], true)) - ## - ## Build CoreCLR checked - ## Only when CoreCLR is changed - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - # buildConfig: checked - # platforms: - # - linux_x64 - # - linux_arm - # - linux_arm64 - # - linux_riscv64 - # - linux_musl_arm - # - linux_musl_arm64 - # - linux_musl_x64 - # - osx_arm64 - # - windows_x86 - # - windows_x64 - # - windows_arm64 - # jobParameters: - # testGroup: innerloop - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## Build the whole product using GNU compiler toolchain - ## When CoreCLR, Mono, Libraries, Installer and src/tests are changed - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: checked - # platforms: - # - gcc_linux_x64 - # jobParameters: - # testGroup: innerloop - # nameSuffix: Native_GCC - # buildArgs: -s clr.native+libs.native+mono+host.native -c $(_BuildConfig) -gcc - # postBuildSteps: - # - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests.yml - # parameters: - # testBuildArgs: skipmanaged skipgeneratelayout skiprestorepackages -gcc - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## Build CoreCLR osx_x64 checked - ## Only when CoreCLR or Libraries is changed - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - # buildConfig: checked - # platforms: - # - osx_x64 - # jobParameters: - # testGroup: innerloop - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## Build CoreCLR release - ## Always as they are needed by Installer and we always build and test the Installer. - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - # buildConfig: release - # platforms: - # - osx_arm64 - # - osx_x64 - # - linux_x64 - # - linux_arm - # - linux_arm64 - # - linux_musl_x64 - # - linux_musl_arm - # - linux_musl_arm64 - # - windows_x64 - # - windows_x86 - # - windows_arm64 - # - freebsd_x64 - # jobParameters: - # testGroup: innerloop - # # Mono/runtimetests also need this, but skip for wasm - # condition: - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## Build CoreCLR Formatting Job - ## Only when CoreCLR is changed, and only in the 'main' branch (no release branches; - ## both Rolling and PR builds). - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml - # platforms: - # - linux_x64 - # - windows_x64 - # jobParameters: - # condition: >- - # and( - # or( - # eq(variables['Build.SourceBranchName'], 'main'), - # eq(variables['System.PullRequest.TargetBranch'], 'main')), - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_jit.containsChange'], true), - # eq(variables['isRollingBuild'], true))) - - ## - ## Build CoreCLR with no R2R - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # buildConfig: checked - # runtimeFlavor: coreclr - # platforms: - # - linux_x86 - # jobParameters: - # testScope: innerloop - # nameSuffix: CoreCLR_NoR2R - # buildArgs: -s clr.runtime+clr.jit+clr.iltools+clr.spmi+clr.corelib -c $(_BuildConfig) - # timeoutInMinutes: 120 - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## Build CoreCLR as a non-portable build - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # buildConfig: checked - # runtimeFlavor: coreclr - # platforms: - # - tizen_armel - # jobParameters: - # testScope: innerloop - # nameSuffix: CoreCLR_NonPortable - # buildArgs: -s clr.native+clr.tools+clr.corelib+clr.nativecorelib+clr.aot+clr.packages -c $(_BuildConfig) /p:PortableBuild=false - # timeoutInMinutes: 120 - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## CoreCLR NativeAOT debug build and smoke tests - ## Only when CoreCLR is changed - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # buildConfig: Debug - # platforms: - # - linux_x64 - # - windows_x64 - # variables: - # - name: timeoutPerTestInMinutes - # value: 60 - # - name: timeoutPerTestCollectionInMinutes - # value: 180 - # jobParameters: - # timeoutInMinutes: 120 - # nameSuffix: NativeAOT - # buildArgs: -s clr.aot+host.native+libs -rc $(_BuildConfig) -lc Release -hc Release - # postBuildSteps: - # - template: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - # parameters: - # creator: dotnet-bot - # testBuildArgs: nativeaot tree nativeaot - # liveLibrariesBuildConfig: Release - # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - # extraVariablesTemplates: - # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - # parameters: - # testGroup: innerloop - # liveLibrariesBuildConfig: Release - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## CoreCLR NativeAOT checked build and smoke tests - ## Only when CoreCLR is changed - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # buildConfig: Checked - # platforms: - # - windows_x64 - # variables: - # - name: timeoutPerTestInMinutes - # value: 60 - # - name: timeoutPerTestCollectionInMinutes - # value: 180 - # jobParameters: - # timeoutInMinutes: 180 - # nameSuffix: NativeAOT - # buildArgs: -s clr.aot+host.native+libs.native+libs.sfx -rc $(_BuildConfig) -lc Release -hc Release - # postBuildSteps: - # - template: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - # parameters: - # creator: dotnet-bot - # testBuildArgs: 'nativeaot tree ";nativeaot;Loader;Interop;" /p:BuildNativeAotFrameworkObjects=true' - # liveLibrariesBuildConfig: Release - # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - # extraVariablesTemplates: - # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - # parameters: - # testGroup: innerloop - # liveLibrariesBuildConfig: Release - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## CoreCLR NativeAOT release build and smoke tests - ## Only when CoreCLR is changed - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # buildConfig: Release - # platforms: - # - linux_x64 - # - windows_x64 - # - osx_x64 - # - linux_arm64 - # - windows_arm64 - # - osx_arm64 - # variables: - # - name: timeoutPerTestInMinutes - # value: 60 - # - name: timeoutPerTestCollectionInMinutes - # value: 180 - # jobParameters: - # testGroup: innerloop - # timeoutInMinutes: 120 - # nameSuffix: NativeAOT - # buildArgs: -s clr.aot+host.native+libs+tools.illink -c $(_BuildConfig) -rc $(_BuildConfig) -lc Release -hc Release - # postBuildSteps: - # - template: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml - # parameters: - # creator: dotnet-bot - # testBuildArgs: 'nativeaot tree ";nativeaot;tracing/eventpipe/providervalidation;"' - # liveLibrariesBuildConfig: Release - # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - # extraVariablesTemplates: - # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - # parameters: - # testGroup: innerloop - # liveLibrariesBuildConfig: Release - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## CoreCLR NativeAOT release build and libraries tests - ## Only when CoreCLR or library is changed - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # buildConfig: Release - # platforms: - # - windows_arm64 - # - linux_arm64 - # - osx_arm64 - # jobParameters: - # testGroup: innerloop - # isSingleFile: true - # nameSuffix: NativeAOT_Libraries - # buildArgs: -s clr.aot+host.native+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:RunSmokeTestsOnly=true /p:ArchiveTests=true - # timeoutInMinutes: 240 # Doesn't actually take long, but we've seen the ARM64 Helix queue often get backlogged for 2+ hours - # # extra steps, run tests - # postBuildSteps: - # - template: /eng/pipelines/libraries/helix.yml - # parameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## Build and test clr tools - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: checked - # platforms: - # - linux_x64 - # jobParameters: - # timeoutInMinutes: 120 - # nameSuffix: CLR_Tools_Tests - # buildArgs: -s clr.aot+clr.iltools+libs.sfx+clr.toolstests -c $(_BuildConfig) -test - # enablePublishTestResults: true - # testResultsFormat: 'xunit' - # # We want to run AOT tests when illink changes because there's share code and tests from illink which are used by AOT - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - ## - ## Build CrossDacs - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: release - # platforms: - # - windows_x64 - # variables: - # - name: _archParameter - # value: -arch x64,x86,arm,arm64 - # jobParameters: - # buildArgs: -s linuxdac+alpinedac -c Checked,$(_BuildConfig) - # nameSuffix: CrossDac - # isOfficialBuild: false - # timeoutInMinutes: 60 - # postBuildSteps: - # - publish: $(Build.SourcesDirectory)/artifacts/bin/coreclr - # displayName: Publish CrossDacs for diagnostics - # artifact: CoreCLRCrossDacArtifacts - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## Build Mono AOT offset headers once, for consumption elsewhere - ## Only when mono changed - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml - # buildConfig: release - # platforms: - # - android_x64 - # - browser_wasm - # - tvos_arm64 - # - ios_arm64 - # - maccatalyst_x64 - # jobParameters: - # isOfficialBuild: false - # # needed by crossaot - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## Build the whole product using Mono runtime - ## Only when libraries, mono or installer are changed - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # runtimeFlavor: mono - # platforms: - # - tvossimulator_x64 - # - linux_arm - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono - # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - linux_musl_x64 - # - linux_riscv64 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono - # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## WebAssembly legs - ## - #- template: /eng/pipelines/common/templates/wasm-library-tests.yml - # parameters: - # platforms: - # - browser_wasm - # alwaysRun: ${{ variables.isRollingBuild }} - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - # scenarios: - # - normal - # - WasmTestOnBrowser - - #- template: /eng/pipelines/common/templates/wasm-library-tests.yml - # parameters: - # platforms: - # - browser_wasm_win - # alwaysRun: ${{ variables.isRollingBuild }} - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - # scenarios: - # - WasmTestOnBrowser - - ## EAT Library tests - only run on linux - #- template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - # parameters: - # platforms: - # - browser_wasm - # nameSuffix: _EAT - # runAOT: false - # shouldRunSmokeOnly: false - # alwaysRun: ${{ variables.isRollingBuild }} - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - ## AOT Library tests - #- template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - # parameters: - # platforms: - # - browser_wasm - # nameSuffix: _AOT - # runAOT: true - # shouldRunSmokeOnly: true - # alwaysRun: ${{ variables.isRollingBuild }} - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - #- template: /eng/pipelines/common/templates/wasm-library-aot-tests.yml - # parameters: - # platforms: - # - browser_wasm_win - # nameSuffix: _AOT - # runAOT: true - # shouldRunSmokeOnly: true - # alwaysRun: ${{ variables.isRollingBuild }} - - ## For Wasm.Build.Tests - runtime pack builds - #- template: /eng/pipelines/common/templates/wasm-build-only.yml - # parameters: - # platforms: - # - browser_wasm - # - browser_wasm_win - # condition: or(eq(variables.isRollingBuild, true), eq(variables.wasmSingleThreadedBuildOnlyNeededOnDefaultPipeline, true)) - # nameSuffix: SingleThreaded - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - # publishArtifactsForWorkload: true - # publishWBT: true - - #- template: /eng/pipelines/common/templates/wasm-build-only.yml - # parameters: - # platforms: - # - browser_wasm - # - browser_wasm_win - # condition: or(eq(variables.isRollingBuild, true), eq(variables.wasmSingleThreadedBuildOnlyNeededOnDefaultPipeline, true)) - # nameSuffix: MultiThreaded - # extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:WasmEnableThreads=true /p:_WasmPThreadPoolSize=8 /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - # publishArtifactsForWorkload: true - # publishWBT: false - - ## Browser Wasm.Build.Tests - #- template: /eng/pipelines/common/templates/browser-wasm-build-tests.yml - # parameters: - # platforms: - # - browser_wasm - # - browser_wasm_win - # alwaysRun: ${{ variables.isRollingBuild }} - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - ## Wasm Debugger tests - #- template: /eng/pipelines/common/templates/wasm-debugger-tests.yml - # parameters: - # platforms: - # - browser_wasm - # - browser_wasm_win - # alwaysRun: ${{ variables.isRollingBuild }} - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - ## Wasm runtime tests - #- template: /eng/pipelines/common/templates/wasm-runtime-tests.yml - # parameters: - # platforms: - # - browser_wasm - # alwaysRun: ${{ variables.isRollingBuild }} - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - - ## Build and Smoke Tests only - Wasm Threading Legs - #- template: /eng/pipelines/common/templates/wasm-library-tests.yml - # parameters: - # platforms: - # - browser_wasm - # nameSuffix: _Threading_Smoke - # extraBuildArgs: /p:MonoWasmBuildVariant=multithread /p:_WasmPThreadPoolSize=8 /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - # shouldRunSmokeOnly: true - # alwaysRun: ${{ variables.isRollingBuild }} - # scenarios: - # - WasmTestOnBrowser - - ## WASI/WASM - - #- template: /eng/pipelines/common/templates/wasm-library-tests.yml - # parameters: - # platforms: - # - wasi_wasm - # - wasi_wasm_win - # nameSuffix: '_Smoke' - # extraBuildArgs: /p:EnableAggressiveTrimming=true /p:RunWasmSamples=true /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - # shouldContinueOnError: true - # shouldRunSmokeOnly: true - # alwaysRun: ${{ variables.isRollingBuild }} - # scenarios: - # - normal - - #- template: /eng/pipelines/common/templates/simple-wasm-build-tests.yml - # parameters: - # platforms: - # - wasi_wasm - # - wasi_wasm_win - # extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) - # alwaysRun: ${{ variables.isRollingBuild }} - - ## - ## Android devices - ## Build the whole product using Mono and run libraries tests - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - android_arm - # - android_arm64 - # variables: - # # map dependencies variables to local variables - # - name: librariesContainsChange - # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - # - name: monoContainsChange - # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono - # buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:EnableAdditionalTimezoneChecks=true - # timeoutInMinutes: 480 - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - # # extra steps, run tests - # postBuildSteps: - # - template: /eng/pipelines/libraries/helix.yml - # parameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_$(_BuildConfig) - # condition: >- - # or( - # eq(variables['librariesContainsChange'], true), - # eq(variables['monoContainsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size - ## Build the whole product using Mono and run libraries tests - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - ios_arm64 - # - tvos_arm64 - # variables: - # # map dependencies variables to local variables - # - name: librariesContainsChange - # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - # - name: monoContainsChange - # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono - # buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true /p:RunSmokeTestsOnly=true /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true - # timeoutInMinutes: 480 - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - # # extra steps, run tests - # postBuildSteps: - # - template: /eng/pipelines/libraries/helix.yml - # parameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_$(_BuildConfig) - # extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true - # condition: >- - # or( - # eq(variables['librariesContainsChange'], true), - # eq(variables['monoContainsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## iOS/tvOS devices - ## Build the whole product using Native AOT and run libraries tests - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # buildConfig: Release - # runtimeFlavor: coreclr - # platforms: - # - ios_arm64 - # - tvos_arm64 - # variables: - # # map dependencies variables to local variables - # - name: librariesContainsChange - # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - # - name: coreclrContainsChange - # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'] ] - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_NativeAOT - # buildArgs: --cross -s clr.alljits+clr.tools+clr.nativeaotruntime+clr.nativeaotlibs+libs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=- /p:BuildTestsOnHelix=true /p:UseNativeAOTRuntime=true /p:RunAOTCompilation=false /p:ContinuousIntegrationBuild=true - # timeoutInMinutes: 180 - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - # # extra steps, run tests - # postBuildSteps: - # - template: /eng/pipelines/libraries/helix.yml - # parameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) - # extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true - # condition: >- - # or( - # eq(variables['librariesContainsChange'], true), - # eq(variables['coreclrContainsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## MacCatalyst interp - requires AOT Compilation and Interp flags - ## Build the whole product using Mono and run libraries tests - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - maccatalyst_x64 - # - ${{ if eq(variables['isRollingBuild'], true) }}: - # - maccatalyst_arm64 - # variables: - # # map dependencies variables to local variables - # - name: librariesContainsChange - # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - # - name: monoContainsChange - # value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono - # buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildDarwinFrameworks=true - # timeoutInMinutes: 180 - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - # # extra steps, run tests - # postBuildSteps: - # - template: /eng/pipelines/libraries/helix.yml - # parameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_$(_BuildConfig) - # condition: >- - # or( - # eq(variables['librariesContainsChange'], true), - # eq(variables['monoContainsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## Build Mono and Installer on LLVMJIT mode - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - osx_x64 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_LLVMJIT - # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # runtimeFlavor: mono - # platforms: - # - linux_x64 - # - linux_arm64 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_LLVMJIT - # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - # /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## Build Mono and Installer on LLVMAOT mode - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - linux_x64 - # - linux_arm64 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_LLVMAOT - # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - # /p:MonoEnableLLVM=true /p:MonoAOTEnableLLVM=true /p:MonoBundleLLVMOptimizer=true - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # runtimeFlavor: mono - # platforms: - # - osx_x64 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_LLVMAOT - # buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) - # /p:MonoEnableLLVM=true /p:MonoAOTEnableLLVM=true /p:MonoBundleLLVMOptimizer=true - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## Build Mono debug - ## Only when mono changed - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/build-job.yml - # runtimeFlavor: mono - # buildConfig: debug - # platforms: - # - osx_x64 - # - osx_arm64 - # - linux_x64 - # - linux_arm64 - # # - linux_musl_arm64 - # - windows_x64 - # - windows_x86 - # # - windows_arm64 - # jobParameters: - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## Build Mono release AOT cross-compilers - ## Only when mono changed - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/build-job.yml - # runtimeFlavor: mono - # buildConfig: release - # platforms: - # - linux_x64 - # - linux_musl_x64 - # - linux_arm64 - # - linux_musl_arm64 - # - windows_arm64 - # - windows_x64 - # jobParameters: - # runtimeVariant: crossaot - # dependsOn: - # - mono_android_offsets - # - mono_browser_offsets - # monoCrossAOTTargetOS: - # - android - # - browser - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/build-job.yml - # runtimeFlavor: mono - # buildConfig: release - # platforms: - # - osx_x64 - # - osx_arm64 - # jobParameters: - # runtimeVariant: crossaot - # dependsOn: - # - mono_android_offsets - # - mono_browser_offsets - # - mono_tvos_offsets - # - mono_ios_offsets - # - mono_maccatalyst_offsets - # monoCrossAOTTargetOS: - # - android - # - browser - # - tvos - # - ios - # - maccatalyst - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## Build Mono release - ## Only when libraries or mono changed - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/build-job.yml - # runtimeFlavor: mono - # buildConfig: release - # platforms: - # - linux_x64 - # # - linux_musl_arm64 - # - windows_x64 - # - windows_x86 - # # - windows_arm64 - # jobParameters: - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## Build Mono release - ## Only when libraries, mono, or the runtime tests changed - ## Currently only these architectures are needed for the runtime tests. - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/build-job.yml - # runtimeFlavor: mono - # buildConfig: release - # platforms: - # - osx_x64 - # - linux_arm64 - # jobParameters: - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## Build Mono release with LLVM AOT - ## Only when mono, or the runtime tests changed - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/mono/templates/build-job.yml - # runtimeFlavor: mono - # buildConfig: release - # platforms: - # - linux_x64 - # - linux_arm64 - # jobParameters: - # runtimeVariant: llvmaot - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## Build libraries using live CoreLib - ## These set of libraries are built always no matter what changed - ## The reason for that is because Corelib and Installer needs it and - ## These are part of the test matrix for Libraries changes. - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/build-job.yml - # buildConfig: Release - # platforms: - # - linux_arm - # - linux_musl_arm - # - linux_musl_arm64 - # - windows_arm64 - # - windows_x86 - # jobParameters: - # condition: - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/build-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # - linux_arm64 - # - linux_musl_x64 - # - linux_x64 - # - osx_arm64 - # - osx_x64 - # - windows_x64 - # - freebsd_x64 - # jobParameters: - # testScope: innerloop - # condition: - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## Libraries debug build that only runs when coreclr is changed - ## Only do this on PR builds since we use the Release builds for these test runs in CI - ## and those are already built above - ## - #- ${{ if eq(variables['isRollingBuild'], false) }}: - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/build-job.yml - # buildConfig: Debug - # platforms: - # - windows_x86 - # jobParameters: - # condition: >- - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) - - ## - ## Libraries release build that only runs when coreclr is changed in PRs - ## We need these for checked coreclr + release libraries tests runs. - ## - #- ${{ if eq(variables['isRollingBuild'], false) }}: - # - template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/build-job.yml - # buildConfig: Release - # platforms: - # - linux_x64 - # - windows_x64 - # jobParameters: - # condition: >- - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true) - - ## - ## Build and test libraries for .NET Framework - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: Release - # platforms: - # - windows_x86 - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # jobParameters: - # framework: net48 - # buildArgs: -s tools+libs+libs.tests -framework net48 -c $(_BuildConfig) -testscope innerloop /p:ArchiveTests=true - # nameSuffix: Libraries_NET48 - # timeoutInMinutes: 150 - # postBuildSteps: - # - template: /eng/pipelines/libraries/helix.yml - # parameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: NET48_$(_BuildConfig) - # extraHelixArguments: /p:BuildTargetFramework=net48 - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## Build and test libraries AllConfigurations - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # - windows_x64 - # jobParameters: - # buildArgs: -test -s tools+libs+libs.tests -allConfigurations -c $(_BuildConfig) /p:TestAssemblies=false /p:TestPackages=true - # nameSuffix: Libraries_AllConfigurations - # timeoutInMinutes: 150 - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## Installer Build and Test - ## These are always built since they only take like 15 minutes - ## we expect these to be done before we finish libraries or coreclr testing. - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/installer/jobs/build-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # - linux_musl_arm - # - linux_musl_arm64 - # - windows_x86 - # - windows_arm64 - # - linux_arm - # jobParameters: - # liveRuntimeBuildConfig: release - # liveLibrariesBuildConfig: Release - # runOnlyIfDependenciesSucceeded: true - # condition: - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/installer/jobs/build-job.yml - # buildConfig: Release - # platforms: - # - osx_arm64 - # - osx_x64 - # - linux_x64 - # - linux_arm64 - # - linux_musl_x64 - # - windows_x64 - # - freebsd_x64 - # jobParameters: - # liveRuntimeBuildConfig: release - # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # runOnlyIfDependenciesSucceeded: true - # condition: - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## 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: - # - CoreClrTestBuildHost # Either osx_x64 or linux_x64 - # jobParameters: - # testGroup: innerloop - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## CoreCLR Test executions using live libraries - ## Only when CoreCLR is changed - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - # buildConfig: checked - # platforms: - # - linux_arm - # - windows_x86 - # - windows_arm64 - # helixQueueGroup: pr - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # jobParameters: - # testGroup: innerloop - # liveLibrariesBuildConfig: Release - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - # buildConfig: checked - # platforms: - # - osx_x64 - # - linux_x64 - # - linux_arm64 - # - windows_x64 - # helixQueueGroup: pr - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # jobParameters: - # testGroup: innerloop - # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - # buildConfig: checked - # platforms: - # - osx_arm64 - # helixQueueGroup: pr - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # jobParameters: - # testGroup: innerloop - # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr_AppleSilicon.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## Mono Test builds with CoreCLR runtime tests using live libraries debug build - ## Only when Mono is changed - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml - # buildConfig: release - # runtimeFlavor: mono - # platforms: - # - CoreClrTestBuildHost # Either osx_x64 or linux_x64 - # jobParameters: - # testGroup: innerloop - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - # buildConfig: release - # runtimeFlavor: mono - # platforms: - # - windows_x64 - # helixQueueGroup: pr - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # jobParameters: - # testGroup: innerloop - # liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # liveRuntimeBuildConfig: release - # runtimeVariant: minijit - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## Build the whole product using Mono and run runtime tests - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - osx_x64 - # - linux_arm64 - # variables: - # - name: timeoutPerTestInMinutes - # value: 60 - # - name: timeoutPerTestCollectionInMinutes - # value: 180 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_Minijit_RuntimeTests - # runtimeVariant: minijit - # buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release - # timeoutInMinutes: 180 - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - # postBuildSteps: - # - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - # parameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_Release - # extraVariablesTemplates: - # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - - ## - ## Mono CoreCLR runtime Test executions using live libraries in interpreter mode - ## Only when Mono is changed - - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - osx_x64 - # variables: - # - name: timeoutPerTestInMinutes - # value: 60 - # - name: timeoutPerTestCollectionInMinutes - # value: 180 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_Interpreter_RuntimeTests - # runtimeVariant: monointerpreter - # buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release - # timeoutInMinutes: 180 - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - # postBuildSteps: - # - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - # parameters: - # creator: dotnet-bot - # testRunNamePrefixSuffix: Mono_Release - # extraVariablesTemplates: - # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - ## - ## Mono CoreCLR runtime Test executions using live libraries and LLVM AOT - ## Only when Mono is changed - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # buildConfig: Release - # runtimeFlavor: mono - # platforms: - # - linux_x64 - # # Disabled pending outcome of https://github.com/dotnet/runtime/issues/60234 investigation - # #- linux_arm64 - # variables: - # - name: timeoutPerTestInMinutes - # value: 60 - # - name: timeoutPerTestCollectionInMinutes - # value: 180 - # jobParameters: - # testGroup: innerloop - # nameSuffix: AllSubsets_Mono_LLVMAot_RuntimeTests - # runtimeVariant: llvmaot - # buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release /p:MonoEnableLLVM=true /p:MonoAOTEnableLLVM=true /p:MonoBundleLLVMOptimizer=true - # timeoutInMinutes: 180 - - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - # postBuildSteps: - # - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml - # parameters: - # creator: dotnet-bot - # llvmAotStepContainer: linux_x64_llvmaot - # testRunNamePrefixSuffix: Mono_Release - # extraVariablesTemplates: - # - template: /eng/pipelines/common/templates/runtimes/test-variables.yml - - ## - ## Libraries Release Test Execution against a release mono runtime. - ## Only when libraries or mono changed - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/run-test-job.yml - # runtimeFlavor: mono - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # # - windows_x64 - # - osx_x64 - # - linux_arm64 - # - linux_x64 - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # jobParameters: - # isOfficialBuild: false - # runtimeDisplayName: mono - # testScope: innerloop - # liveRuntimeBuildConfig: release - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## Libraries Release Test Execution against a release mono interpreter runtime. - ## Only when libraries or mono changed - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/run-test-job.yml - # runtimeFlavor: mono - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # # - windows_x64 - # #- osx_x64 - # - linux_x64 - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # jobParameters: - # isOfficialBuild: false - # interpreter: true - # runtimeDisplayName: mono_interpreter - # testScope: innerloop - # liveRuntimeBuildConfig: release - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## Libraries Release Test Execution against a release coreclr runtime - ## Only when the PR contains a libraries change - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/run-test-job.yml - # buildConfig: Release - # platforms: - # - windows_x86 - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # jobParameters: - # isOfficialBuild: false - # testScope: innerloop - # liveRuntimeBuildConfig: release - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## Libraries Debug Test Execution against a release coreclr runtime - ## Only when the PR contains a libraries change - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/run-test-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # - windows_x64 - # - osx_x64 - # - linux_x64 - # - linux_musl_x64 - # helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - # jobParameters: - # isOfficialBuild: false - # testScope: innerloop - # liveRuntimeBuildConfig: release - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## The next three jobs run checked coreclr + libraries tests. - ## The matrix looks like the following, where the right columns specify which configurations - ## the libraries tests are built in. - ## ________________________________________ - ## | Platform | PR | Rolling | - ## | ---------------- | ------- | ------- | - ## | linux-arm64 | Debug | Release | - ## | windows-x86 | Debug | Release | - ## | linux-musl-x64 | Debug | Release | - ## | OSX-x64 | Debug | Release | - ## | linux-musl-arm | Release | Release | - ## | linux-musl-arm64 | Release | Release | - ## | linux-x64 | Release | Release | - ## | windows-x64 | Release | Release | - - ## - ## Debug (PR) / Release (rolling) Libraries Test Execution against a checked runtime - ## Only when the PR contains a coreclr change - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/run-test-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # - linux_arm64 - # - windows_x86 - # - linux_musl_x64 - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # helixQueueGroup: libraries - # jobParameters: - # testScope: innerloop - # liveRuntimeBuildConfig: checked - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## Release Libraries Test Execution against a checked runtime - ## Only if CoreCLR or Libraries is changed - ## - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/run-test-job.yml - # buildConfig: Release - # platforms: - # - linux_musl_arm - # - linux_musl_arm64 - # - linux_x64 - # - windows_x64 - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # helixQueueGroup: libraries - # jobParameters: - # testScope: innerloop - # liveRuntimeBuildConfig: checked - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/libraries/run-test-job.yml - # buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - # platforms: - # - osx_x64 - # helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - # helixQueueGroup: libraries - # jobParameters: - # testScope: innerloop - # liveRuntimeBuildConfig: checked - # condition: >- - # or( - # eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), - # eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - # eq(variables['isRollingBuild'], true)) - - ## - ## Sourcebuild legs - ## We have 3 important legs for source-build: - ## - Centos.8 (ensures that known non-portable RID is working) - ## - Linux-x64 portable (used for dependency flow and downstream PR verification) - ## - Banana.24 - Non-existent RID to ensure we don't break RIDs we don't know about. - ## - ## Running all of these everywhere is wasteful. Run Banana.24 and CentOS.8 in rolling CI, - ## Run Linux-x64 in PR. - - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: Release - # helixQueueGroup: pr - # platforms: - # - SourceBuild_centos8_x64 - # jobParameters: - # nameSuffix: centos8SourceBuild - # timeoutInMinutes: 95 - # condition: eq(variables['isRollingBuild'], true) - - #- template: /eng/pipelines/common/platform-matrix.yml - # parameters: - # jobTemplate: /eng/pipelines/common/global-build-job.yml - # buildConfig: Release - # helixQueueGroup: pr - # platforms: - # - SourceBuild_banana24_x64 - # jobParameters: - # nameSuffix: banana24SourceBuild - # timeoutInMinutes: 95 - # condition: eq(variables['isRollingBuild'], true) + # + # Mono Test builds with CoreCLR runtime tests using live libraries debug build + # Only when Mono is changed + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml + buildConfig: release + runtimeFlavor: mono + platforms: + - CoreClrTestBuildHost # Either osx_x64 or linux_x64 + jobParameters: + testGroup: innerloop + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + buildConfig: release + runtimeFlavor: mono + platforms: + - windows_x64 + helixQueueGroup: pr + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + jobParameters: + testGroup: innerloop + liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + liveRuntimeBuildConfig: release + runtimeVariant: minijit + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Build the whole product using Mono and run runtime tests + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - osx_x64 + - linux_arm64 + variables: + - name: timeoutPerTestInMinutes + value: 60 + - name: timeoutPerTestCollectionInMinutes + value: 180 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono_Minijit_RuntimeTests + runtimeVariant: minijit + buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release + timeoutInMinutes: 180 + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + postBuildSteps: + - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + parameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_Release + extraVariablesTemplates: + - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + + # + # Mono CoreCLR runtime Test executions using live libraries in interpreter mode + # Only when Mono is changed + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - osx_x64 + variables: + - name: timeoutPerTestInMinutes + value: 60 + - name: timeoutPerTestCollectionInMinutes + value: 180 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono_Interpreter_RuntimeTests + runtimeVariant: monointerpreter + buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release + timeoutInMinutes: 180 + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + postBuildSteps: + - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + parameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_Release + extraVariablesTemplates: + - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + # + # Mono CoreCLR runtime Test executions using live libraries and LLVM AOT + # Only when Mono is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - linux_x64 + # Disabled pending outcome of https://github.com/dotnet/runtime/issues/60234 investigation + #- linux_arm64 + variables: + - name: timeoutPerTestInMinutes + value: 60 + - name: timeoutPerTestCollectionInMinutes + value: 180 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono_LLVMAot_RuntimeTests + runtimeVariant: llvmaot + buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release /p:MonoEnableLLVM=true /p:MonoAOTEnableLLVM=true /p:MonoBundleLLVMOptimizer=true + timeoutInMinutes: 180 + + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + postBuildSteps: + - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml + parameters: + creator: dotnet-bot + llvmAotStepContainer: linux_x64_llvmaot + testRunNamePrefixSuffix: Mono_Release + extraVariablesTemplates: + - template: /eng/pipelines/common/templates/runtimes/test-variables.yml + + # + # Libraries Release Test Execution against a release mono runtime. + # Only when libraries or mono changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/run-test-job.yml + runtimeFlavor: mono + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + platforms: + # - windows_x64 + - osx_x64 + - linux_arm64 + - linux_x64 + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + jobParameters: + isOfficialBuild: false + runtimeDisplayName: mono + testScope: innerloop + liveRuntimeBuildConfig: release + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Libraries Release Test Execution against a release mono interpreter runtime. + # Only when libraries or mono changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/run-test-job.yml + runtimeFlavor: mono + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + platforms: + # - windows_x64 + #- osx_x64 + - linux_x64 + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + jobParameters: + isOfficialBuild: false + interpreter: true + runtimeDisplayName: mono_interpreter + testScope: innerloop + liveRuntimeBuildConfig: release + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Libraries Release Test Execution against a release coreclr runtime + # Only when the PR contains a libraries change + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/run-test-job.yml + buildConfig: Release + platforms: + - windows_x86 + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + jobParameters: + isOfficialBuild: false + testScope: innerloop + liveRuntimeBuildConfig: release + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Libraries Debug Test Execution against a release coreclr runtime + # Only when the PR contains a libraries change + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/run-test-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + platforms: + - windows_x64 + - osx_x64 + - linux_x64 + - linux_musl_x64 + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + jobParameters: + isOfficialBuild: false + testScope: innerloop + liveRuntimeBuildConfig: release + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # The next three jobs run checked coreclr + libraries tests. + # The matrix looks like the following, where the right columns specify which configurations + # the libraries tests are built in. + # ________________________________________ + # | Platform | PR | Rolling | + # | ---------------- | ------- | ------- | + # | linux-arm64 | Debug | Release | + # | windows-x86 | Debug | Release | + # | linux-musl-x64 | Debug | Release | + # | OSX-x64 | Debug | Release | + # | linux-musl-arm | Release | Release | + # | linux-musl-arm64 | Release | Release | + # | linux-x64 | Release | Release | + # | windows-x64 | Release | Release | + + # + # Debug (PR) / Release (rolling) Libraries Test Execution against a checked runtime + # Only when the PR contains a coreclr change + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/run-test-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + platforms: + - linux_arm64 + - windows_x86 + - linux_musl_x64 + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + helixQueueGroup: libraries + jobParameters: + testScope: innerloop + liveRuntimeBuildConfig: checked + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Release Libraries Test Execution against a checked runtime + # Only if CoreCLR or Libraries is changed + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/run-test-job.yml + buildConfig: Release + platforms: + - linux_musl_arm + - linux_musl_arm64 + - linux_x64 + - windows_x64 + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + helixQueueGroup: libraries + jobParameters: + testScope: innerloop + liveRuntimeBuildConfig: checked + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/run-test-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + platforms: + - osx_x64 + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + helixQueueGroup: libraries + jobParameters: + testScope: innerloop + liveRuntimeBuildConfig: checked + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Sourcebuild legs + # We have 3 important legs for source-build: + # - Centos.8 (ensures that known non-portable RID is working) + # - Linux-x64 portable (used for dependency flow and downstream PR verification) + # - Banana.24 - Non-existent RID to ensure we don't break RIDs we don't know about. + # + # Running all of these everywhere is wasteful. Run Banana.24 and CentOS.8 in rolling CI, + # Run Linux-x64 in PR. + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: Release + helixQueueGroup: pr + platforms: + - SourceBuild_centos8_x64 + jobParameters: + nameSuffix: centos8SourceBuild + timeoutInMinutes: 95 + condition: eq(variables['isRollingBuild'], true) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: Release + helixQueueGroup: pr + platforms: + - SourceBuild_banana24_x64 + jobParameters: + nameSuffix: banana24SourceBuild + timeoutInMinutes: 95 + condition: eq(variables['isRollingBuild'], true) From 70a531079cf9681ed53deaddf127c8f725ecf042 Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Fri, 20 Oct 2023 13:15:25 -0700 Subject: [PATCH 16/45] Removed repeated arguments from the post build steps. --- eng/pipelines/libraries/build-for-test-ready-to-run.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/eng/pipelines/libraries/build-for-test-ready-to-run.yml b/eng/pipelines/libraries/build-for-test-ready-to-run.yml index 166f1e6819e4b..d885c058cb784 100644 --- a/eng/pipelines/libraries/build-for-test-ready-to-run.yml +++ b/eng/pipelines/libraries/build-for-test-ready-to-run.yml @@ -39,9 +39,3 @@ jobs: postBuildSteps: - template: '/eng/pipelines/libraries/run-test-ready-to-run.yml' - parameters: - archType: ${{ parameters.archType }} - buildConfig: ${{ parameters.buildConfig }} - osGroup: ${{ parameters.osGroup }} - variables: ${{ parameters.variables }} - From 29bdc40b00487663fc932652ac89147c5d08e3a1 Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Mon, 23 Oct 2023 10:09:45 -0700 Subject: [PATCH 17/45] Reverted weird change in System.Runtime/Directory.Build.props --- src/libraries/System.Runtime/Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/System.Runtime/Directory.Build.props b/src/libraries/System.Runtime/Directory.Build.props index e8d65546d0c80..63f02a0f817ef 100644 --- a/src/libraries/System.Runtime/Directory.Build.props +++ b/src/libraries/System.Runtime/Directory.Build.props @@ -3,4 +3,4 @@ Microsoft - + \ No newline at end of file From 0dafa7a3b9c77b29c85523bed417eb8fa983eebf Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Mon, 23 Oct 2023 10:11:29 -0700 Subject: [PATCH 18/45] Removed unnecessary import in Build.proj --- Build.proj | 1 - 1 file changed, 1 deletion(-) diff --git a/Build.proj b/Build.proj index 244811651fb1e..baa240685ae5d 100644 --- a/Build.proj +++ b/Build.proj @@ -9,7 +9,6 @@ - From 0987abff4d7a230445e8e3b4fa443dae88d42c51 Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Mon, 23 Oct 2023 14:59:39 -0700 Subject: [PATCH 19/45] As per Jeremy's feedback, now trying to set the TestReadyToRun template like any other, since the Crossgen2 infrastructure now supports it. --- eng/pipelines/coreclr/crossgen2.yml | 15 ++++++- .../libraries/build-for-test-ready-to-run.yml | 41 ------------------- .../libraries/run-test-ready-to-run.yml | 16 -------- 3 files changed, 14 insertions(+), 58 deletions(-) delete mode 100644 eng/pipelines/libraries/build-for-test-ready-to-run.yml delete mode 100644 eng/pipelines/libraries/run-test-ready-to-run.yml diff --git a/eng/pipelines/coreclr/crossgen2.yml b/eng/pipelines/coreclr/crossgen2.yml index 1f149f45f92ea..0cfb0909a52fe 100644 --- a/eng/pipelines/coreclr/crossgen2.yml +++ b/eng/pipelines/coreclr/crossgen2.yml @@ -59,13 +59,26 @@ extends: - template: /eng/pipelines/common/platform-matrix.yml parameters: - jobTemplate: /eng/pipelines/libraries/build-for-test-ready-to-run.yml + jobTemplate: /eng/pipelines/common/global-build-job.yml helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml buildConfig: Release platforms: - linux_x64 - osx_x64 - windows_x64 + jobParameters: + buildArgs: -s clr+libs+libs.tests + -c $(_BuildConfig) + /p:TestReadyToRun=true + /p:RunSmokeTestsOnly=true + /p:UseLocalAppHostPack=true + nameSuffix: TestReadyToRun_Libraries + timeoutInMinutes: 120 + postBuildSteps: + - template: /eng/pipelines/libraries/helix.yml + parameters: + creator: dotnet-bot + testRunNamePrefixSuffix: TestReadyToRun_$(_BuildConfig) # Run pri0 tests with hot/cold splitting enabled (only supported on x64 at the moment) # TODO: test on arm64 once supported diff --git a/eng/pipelines/libraries/build-for-test-ready-to-run.yml b/eng/pipelines/libraries/build-for-test-ready-to-run.yml deleted file mode 100644 index d885c058cb784..0000000000000 --- a/eng/pipelines/libraries/build-for-test-ready-to-run.yml +++ /dev/null @@ -1,41 +0,0 @@ -parameters: - archType: '' - container: '' - buildConfig: '' - crossBuild: false - dependOnEvaluatePaths: false - helixQueues: '' - osGroup: '' - osSubgroup: '' - platform: '' - pool: '' - runtimeFlavor: 'coreclr' - shouldContinueOnError: false - targetRid: '' - variables: [] - -jobs: - - template: /eng/pipelines/common/global-build-job.yml - parameters: - buildArgs: -s clr+libs+packs - -c ${{ parameters.buildConfig }} - buildConfig: ${{ parameters.buildConfig }} - - archType: ${{ parameters.archType }} - container: ${{ parameters.container }} - crossBuild: ${{ parameters.crossBuild }} - dependOnEvaluatePaths: ${{ parameters.dependOnEvaluatePaths }} - helixQueues: ${{ parameters.helixQueues }} - nameSuffix: TestReadyToRun_Libraries - osGroup: ${{ parameters.osGroup }} - osSubgroup: ${{ parameters.osSubgroup }} - platform: ${{ parameters.platform }} - pool: ${{ parameters.pool }} - runtimeFlavor: ${{ parameters.runtimeFlavor }} - shouldContinueOnError: ${{ parameters.shouldContinueOnError }} - targetRid: ${{ parameters.targetRid }} - timeoutInMinutes: 120 - variables: ${{ parameters.variables }} - - postBuildSteps: - - template: '/eng/pipelines/libraries/run-test-ready-to-run.yml' diff --git a/eng/pipelines/libraries/run-test-ready-to-run.yml b/eng/pipelines/libraries/run-test-ready-to-run.yml deleted file mode 100644 index aff0018c11eed..0000000000000 --- a/eng/pipelines/libraries/run-test-ready-to-run.yml +++ /dev/null @@ -1,16 +0,0 @@ -parameters: - archType: '' - buildConfig: '' - osGroup: '' - variables: [] - -steps: - - script: $(Build.SourcesDirectory)$(dir)build$(scriptExt) -ci - -subset libs.tests -test - -arch ${{ parameters.archType }} - -os ${{ parameters.osGroup }} - -c ${{ parameters.buildConfig }} - /p:TestReadyToRun=true - /p:RunSmokeTestsOnly=true - /p:UseLocalAppHostPack=true - displayName: Build and Run Libs Tests with TestReadyToRun From c050621a72a924a7de066bd88dc437b3a49a4a61 Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Mon, 23 Oct 2023 15:04:00 -0700 Subject: [PATCH 20/45] Reenabled the problematic tests to see if they still fail. If yes, then disable them again and create (a) Github tracking issue(s). --- .../tests/System.Runtime.Tests.csproj | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/src/libraries/System.Runtime/tests/System.Runtime.Tests.csproj b/src/libraries/System.Runtime/tests/System.Runtime.Tests.csproj index f4783e4c3ab85..8343342574662 100644 --- a/src/libraries/System.Runtime/tests/System.Runtime.Tests.csproj +++ b/src/libraries/System.Runtime/tests/System.Runtime.Tests.csproj @@ -1,4 +1,4 @@ - + $(NetCoreAppCurrent)-windows;$(NetCoreAppCurrent)-unix;$(NetCoreAppCurrent)-browser $(DefineConstants);TARGET_BROWSER @@ -285,23 +285,6 @@ - - - - - - - - - - - From 59af6bbd30ec9308f64cc94279dec1ff8fbaf84c Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Mon, 30 Oct 2023 11:12:52 -0700 Subject: [PATCH 21/45] Found a workaround for the libraries tests! --- eng/pipelines/coreclr/crossgen2.yml | 1 - src/libraries/System.Runtime/tests/System.Runtime.Tests.csproj | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/pipelines/coreclr/crossgen2.yml b/eng/pipelines/coreclr/crossgen2.yml index 0cfb0909a52fe..a5647daec16c8 100644 --- a/eng/pipelines/coreclr/crossgen2.yml +++ b/eng/pipelines/coreclr/crossgen2.yml @@ -71,7 +71,6 @@ extends: -c $(_BuildConfig) /p:TestReadyToRun=true /p:RunSmokeTestsOnly=true - /p:UseLocalAppHostPack=true nameSuffix: TestReadyToRun_Libraries timeoutInMinutes: 120 postBuildSteps: diff --git a/src/libraries/System.Runtime/tests/System.Runtime.Tests.csproj b/src/libraries/System.Runtime/tests/System.Runtime.Tests.csproj index 8343342574662..7e5f3b36baf4f 100644 --- a/src/libraries/System.Runtime/tests/System.Runtime.Tests.csproj +++ b/src/libraries/System.Runtime/tests/System.Runtime.Tests.csproj @@ -1,4 +1,4 @@ - + $(NetCoreAppCurrent)-windows;$(NetCoreAppCurrent)-unix;$(NetCoreAppCurrent)-browser $(DefineConstants);TARGET_BROWSER @@ -14,6 +14,7 @@ true + true + + + + + + + + + + + + From 79a9028b247e8452d9df87703adb35d8e67836e8 Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Tue, 31 Oct 2023 13:36:02 -0700 Subject: [PATCH 25/45] Changed the test disabling mechanism to the already defined 'ActiveIssue' notation, and readded the Helix requests to run the tests. Also, moved the 'UseLocalAppHostPack' setting to a more general place. --- eng/pipelines/coreclr/crossgen2.yml | 9 ++++++-- eng/testing/tests.singlefile.targets | 4 ++++ .../SingleFileTestRunner.cs | 15 +++++++++++++ .../TestUtilities/System/PlatformDetection.cs | 2 ++ src/libraries/Directory.Build.props | 4 ++++ .../tests/System.Runtime.Tests.csproj | 21 ------------------- .../System.Runtime/tests/System/EnumTests.cs | 1 + .../tests/System/Runtime/JitInfoTests.cs | 1 + .../tests/System/Type/TypeTests.Get.cs | 1 + 9 files changed, 35 insertions(+), 23 deletions(-) diff --git a/eng/pipelines/coreclr/crossgen2.yml b/eng/pipelines/coreclr/crossgen2.yml index a57184cc7b409..e3a885fdbade9 100644 --- a/eng/pipelines/coreclr/crossgen2.yml +++ b/eng/pipelines/coreclr/crossgen2.yml @@ -60,6 +60,7 @@ extends: - template: /eng/pipelines/common/platform-matrix.yml parameters: jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml buildConfig: Release platforms: - linux_x64 @@ -68,11 +69,15 @@ extends: jobParameters: testGroup: innerloop buildArgs: -s clr+libs+libs.tests - -c $(_BuildConfig) -test + -c $(_BuildConfig) /p:TestReadyToRun=true - /p:RunSmokeTestsOnly=true nameSuffix: TestReadyToRun_Libraries timeoutInMinutes: 120 + postBuildSteps: + - template: /eng/pipelines/libraries/helix.yml + parameters: + creator: dotnet-bot + testRunNamePrefixSuffix: TestReadyToRun_$(_BuildConfig) # Run pri0 tests with hot/cold splitting enabled (only supported on x64 at the moment) # TODO: test on arm64 once supported diff --git a/eng/testing/tests.singlefile.targets b/eng/testing/tests.singlefile.targets index 8a01f084400db..ce3db67e5b384 100644 --- a/eng/testing/tests.singlefile.targets +++ b/eng/testing/tests.singlefile.targets @@ -67,6 +67,10 @@ $(DefineConstants);SINGLE_FILE_TEST_RUNNER + + $(DefineConstants);TEST_READY_TO_RUN_COMPILED + + diff --git a/src/libraries/Common/tests/SingleFileTestRunner/SingleFileTestRunner.cs b/src/libraries/Common/tests/SingleFileTestRunner/SingleFileTestRunner.cs index 4f99005491b79..37c3493508e7b 100644 --- a/src/libraries/Common/tests/SingleFileTestRunner/SingleFileTestRunner.cs +++ b/src/libraries/Common/tests/SingleFileTestRunner/SingleFileTestRunner.cs @@ -30,6 +30,21 @@ public static int Main(string[] args) // The current RemoteExecutor implementation is not compatible with the SingleFileTestRunner. Environment.SetEnvironmentVariable("DOTNET_REMOTEEXECUTOR_SUPPORTED", "0"); + // GH dotnet/runtime Issue #85417/PR #91229: We have some tests that are + // currently incompatible with the option -p:TestReadyToRun=true. In order + // to exclude them in the test runs, we need to somehow know we are in + // TestReadyToRun mode since we do want to run them otherwise. + // + // So, to achieve this, we set a constant in eng/testing/tests.singlefile.targets, + // which we use in the following preprocessor directive. In the case that it + // is defined, we set an environment variable that we consume later to implement + // PlatformDetection.IsReadyToRunCompiled. This last value is used for the + // [ActiveIssue] annotations designed to exclude tests from running. + +#if TEST_READY_TO_RUN_COMPILED + Environment.SetEnvironmentVariable("TEST_READY_TO_RUN_MODE" ,"1"); +#endif + var diagnosticSink = new ConsoleDiagnosticMessageSink(); var testsFinished = new TaskCompletionSource(); var testSink = new TestMessageSink(); diff --git a/src/libraries/Common/tests/TestUtilities/System/PlatformDetection.cs b/src/libraries/Common/tests/TestUtilities/System/PlatformDetection.cs index 394e0b84682e3..b552710393339 100644 --- a/src/libraries/Common/tests/TestUtilities/System/PlatformDetection.cs +++ b/src/libraries/Common/tests/TestUtilities/System/PlatformDetection.cs @@ -210,6 +210,8 @@ private static bool GetLinqExpressionsBuiltWithIsInterpretingOnly() public static bool HasHostExecutable => HasAssemblyFiles; // single-file don't have a host public static bool IsSingleFile => !HasAssemblyFiles; + public static bool IsReadyToRunCompiled => Environment.GetEnvironmentVariable("TEST_READY_TO_RUN_MODE") == "1"; + private static volatile Tuple s_lazyNonZeroLowerBoundArraySupported; public static bool IsNonZeroLowerBoundArraySupported { diff --git a/src/libraries/Directory.Build.props b/src/libraries/Directory.Build.props index 32fc46a35d8d7..af6fc30ae1ba8 100644 --- a/src/libraries/Directory.Build.props +++ b/src/libraries/Directory.Build.props @@ -85,6 +85,10 @@ true + + true + + --interpreter diff --git a/src/libraries/System.Runtime/tests/System.Runtime.Tests.csproj b/src/libraries/System.Runtime/tests/System.Runtime.Tests.csproj index 343dc3fc37786..29bacddba5df4 100644 --- a/src/libraries/System.Runtime/tests/System.Runtime.Tests.csproj +++ b/src/libraries/System.Runtime/tests/System.Runtime.Tests.csproj @@ -14,7 +14,6 @@ true - true - - - - - - - - - - - - diff --git a/src/libraries/System.Runtime/tests/System/EnumTests.cs b/src/libraries/System.Runtime/tests/System/EnumTests.cs index 2f8dd8ac19074..9bbe8ff5317d2 100644 --- a/src/libraries/System.Runtime/tests/System/EnumTests.cs +++ b/src/libraries/System.Runtime/tests/System/EnumTests.cs @@ -1599,6 +1599,7 @@ public void GetValues_EnumTypeNotEnum_ThrowsArgumentException(Type enumType) private class ClassWithEnumConstraint where T : Enum { } [Fact] + [ActiveIssue("https://github.com/dotnet/runtime/issues/94189", typeof(PlatformDetection), nameof(PlatformDetection.IsReadyToRunCompiled))] public void EnumConstraint_ThrowsArgumentException() { Type genericArgumentWithEnumConstraint = typeof(ClassWithEnumConstraint<>).GetGenericArguments()[0]; diff --git a/src/libraries/System.Runtime/tests/System/Runtime/JitInfoTests.cs b/src/libraries/System.Runtime/tests/System/Runtime/JitInfoTests.cs index 239bceb52effe..a472c3668c02c 100644 --- a/src/libraries/System.Runtime/tests/System/Runtime/JitInfoTests.cs +++ b/src/libraries/System.Runtime/tests/System/Runtime/JitInfoTests.cs @@ -100,6 +100,7 @@ public void JitInfoIsNotPopulated() [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsReflectionEmitSupported))] [SkipOnMono("Mono does not track thread specific JIT information")] + [ActiveIssue("https://github.com/dotnet/runtime/issues/94189", typeof(PlatformDetection), nameof(PlatformDetection.IsReadyToRunCompiled))] public void JitInfoCurrentThreadIsPopulated() { TimeSpan t1_beforeCompilationTime = TimeSpan.Zero; diff --git a/src/libraries/System.Runtime/tests/System/Type/TypeTests.Get.cs b/src/libraries/System.Runtime/tests/System/Type/TypeTests.Get.cs index 478d23e236a7a..e6dfe3a0cb4e8 100644 --- a/src/libraries/System.Runtime/tests/System/Type/TypeTests.Get.cs +++ b/src/libraries/System.Runtime/tests/System/Type/TypeTests.Get.cs @@ -55,6 +55,7 @@ public static IEnumerable GetInterface_TestData() [Theory] [MemberData(nameof(GetInterface_TestData))] + [ActiveIssue("https://github.com/dotnet/runtime/issues/94189", typeof(PlatformDetection), nameof(PlatformDetection.IsReadyToRunCompiled))] public void GetInterface_Invoke_ReturnsExpected(Type type, string name, bool ignoreCase, Type expected) { if (!ignoreCase) From e95e20dc4b2cb8ab8b8c55b1f48f88f1a9a14549 Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Tue, 31 Oct 2023 14:07:14 -0700 Subject: [PATCH 26/45] Moved the 'UseLocalAppHostPack' setting to eng/tests.singlefile.targets. --- eng/testing/tests.singlefile.targets | 1 + src/libraries/Directory.Build.props | 4 ---- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/eng/testing/tests.singlefile.targets b/eng/testing/tests.singlefile.targets index ce3db67e5b384..4da2b310503ec 100644 --- a/eng/testing/tests.singlefile.targets +++ b/eng/testing/tests.singlefile.targets @@ -19,6 +19,7 @@ true false + true diff --git a/src/libraries/Directory.Build.props b/src/libraries/Directory.Build.props index af6fc30ae1ba8..32fc46a35d8d7 100644 --- a/src/libraries/Directory.Build.props +++ b/src/libraries/Directory.Build.props @@ -85,10 +85,6 @@ true - - true - - --interpreter From e85728173b3598c4db79bd4a77762e9c77ce3d88 Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Wed, 1 Nov 2023 11:43:48 -0700 Subject: [PATCH 27/45] Temporarily restored 'UseLocalAppHostPack' to libraries/Directory.Build.props to be able to get unblocked and run the pipelines, to see which other tests we might need to disable. --- eng/testing/tests.singlefile.targets | 1 - .../SingleFileTestRunner/SingleFileTestRunner.cs | 12 ++++-------- src/libraries/Directory.Build.props | 4 ++++ 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/eng/testing/tests.singlefile.targets b/eng/testing/tests.singlefile.targets index 4da2b310503ec..ce3db67e5b384 100644 --- a/eng/testing/tests.singlefile.targets +++ b/eng/testing/tests.singlefile.targets @@ -19,7 +19,6 @@ true false - true diff --git a/src/libraries/Common/tests/SingleFileTestRunner/SingleFileTestRunner.cs b/src/libraries/Common/tests/SingleFileTestRunner/SingleFileTestRunner.cs index 37c3493508e7b..03397ff81a75f 100644 --- a/src/libraries/Common/tests/SingleFileTestRunner/SingleFileTestRunner.cs +++ b/src/libraries/Common/tests/SingleFileTestRunner/SingleFileTestRunner.cs @@ -30,14 +30,10 @@ public static int Main(string[] args) // The current RemoteExecutor implementation is not compatible with the SingleFileTestRunner. Environment.SetEnvironmentVariable("DOTNET_REMOTEEXECUTOR_SUPPORTED", "0"); - // GH dotnet/runtime Issue #85417/PR #91229: We have some tests that are - // currently incompatible with the option -p:TestReadyToRun=true. In order - // to exclude them in the test runs, we need to somehow know we are in - // TestReadyToRun mode since we do want to run them otherwise. - // - // So, to achieve this, we set a constant in eng/testing/tests.singlefile.targets, - // which we use in the following preprocessor directive. In the case that it - // is defined, we set an environment variable that we consume later to implement + // To detect ReadyToRun testing mode, we set a constant in + // eng/testing/tests.singlefile.targets, which we use in the following + // preprocessor directive. In the case that it is defined, we set an + // environment variable that we consume later to implement // PlatformDetection.IsReadyToRunCompiled. This last value is used for the // [ActiveIssue] annotations designed to exclude tests from running. diff --git a/src/libraries/Directory.Build.props b/src/libraries/Directory.Build.props index 32fc46a35d8d7..af6fc30ae1ba8 100644 --- a/src/libraries/Directory.Build.props +++ b/src/libraries/Directory.Build.props @@ -85,6 +85,10 @@ true + + true + + --interpreter From d193ab5b7868d6f7adc1de3b325ffcddef9448fc Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Thu, 2 Nov 2023 09:57:13 -0700 Subject: [PATCH 28/45] Extended the TestReadyToRun pipelines timeout because building all libraries tests takes quite a long time. --- eng/pipelines/coreclr/crossgen2.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/pipelines/coreclr/crossgen2.yml b/eng/pipelines/coreclr/crossgen2.yml index e3a885fdbade9..5a83ef6d8150f 100644 --- a/eng/pipelines/coreclr/crossgen2.yml +++ b/eng/pipelines/coreclr/crossgen2.yml @@ -72,7 +72,7 @@ extends: -c $(_BuildConfig) /p:TestReadyToRun=true nameSuffix: TestReadyToRun_Libraries - timeoutInMinutes: 120 + timeoutInMinutes: 240 postBuildSteps: - template: /eng/pipelines/libraries/helix.yml parameters: From 7a3a1d57450e3f00594ad3530cb47c714148d44f Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Wed, 8 Nov 2023 15:46:56 -0800 Subject: [PATCH 29/45] Testing removing the .dbg files since those are responsible for most of the bloat...! --- eng/testing/tests.singlefile.targets | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/eng/testing/tests.singlefile.targets b/eng/testing/tests.singlefile.targets index ce3db67e5b384..60237823b3a6d 100644 --- a/eng/testing/tests.singlefile.targets +++ b/eng/testing/tests.singlefile.targets @@ -107,6 +107,17 @@ + + + + + + + + + Date: Fri, 10 Nov 2023 09:15:28 -0800 Subject: [PATCH 30/45] Removed the debugging files from the "To Copy" lists, rather than deleting them at the end. --- eng/pipelines/coreclr/crossgen2.yml | 2 +- eng/testing/tests.singlefile.targets | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/eng/pipelines/coreclr/crossgen2.yml b/eng/pipelines/coreclr/crossgen2.yml index 5a83ef6d8150f..9366171fdd733 100644 --- a/eng/pipelines/coreclr/crossgen2.yml +++ b/eng/pipelines/coreclr/crossgen2.yml @@ -72,7 +72,7 @@ extends: -c $(_BuildConfig) /p:TestReadyToRun=true nameSuffix: TestReadyToRun_Libraries - timeoutInMinutes: 240 + timeoutInMinutes: 360 postBuildSteps: - template: /eng/pipelines/libraries/helix.yml parameters: diff --git a/eng/testing/tests.singlefile.targets b/eng/testing/tests.singlefile.targets index 60237823b3a6d..91136ffacca6e 100644 --- a/eng/testing/tests.singlefile.targets +++ b/eng/testing/tests.singlefile.targets @@ -107,15 +107,22 @@ - + BeforeTargets="_CopyFilesMarkedCopyLocal"> - - + + - + + + <_ResolvedFileToPublishPreserveNewest Remove="@(_ResolvedFileToPublishPreserveNewest)" + Condition="'%(_ResolvedFileToPublishPreserveNewest.Extension)' == '.dbg'" /> + Date: Fri, 10 Nov 2023 10:34:15 -0800 Subject: [PATCH 31/45] Replaced Remove+Condition with Remove->WithMetadataValue for better performance and more concise logging. --- eng/testing/tests.singlefile.targets | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/eng/testing/tests.singlefile.targets b/eng/testing/tests.singlefile.targets index 91136ffacca6e..267a734a2615e 100644 --- a/eng/testing/tests.singlefile.targets +++ b/eng/testing/tests.singlefile.targets @@ -111,8 +111,8 @@ Condition="'$(TestReadyToRun)' == 'true'" BeforeTargets="_CopyFilesMarkedCopyLocal"> - + @@ -120,8 +120,8 @@ Condition="'$(TestReadyToRun)' == 'true'" BeforeTargets="_CopyResolvedFilesToPublishPreserveNewest"> - <_ResolvedFileToPublishPreserveNewest Remove="@(_ResolvedFileToPublishPreserveNewest)" - Condition="'%(_ResolvedFileToPublishPreserveNewest.Extension)' == '.dbg'" /> + <_ResolvedFileToPublishPreserveNewest + Remove="@(_ResolvedFileToPublishPreserveNewest->WithMetadataValue('Extension', '.dbg'))" /> From 11cdb6befa36747ffd4dc8fcde9cd75f37f044b5 Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Tue, 14 Nov 2023 13:38:09 -0800 Subject: [PATCH 32/45] Tried adding to pretest setup as per Viktor's suggestion. --- src/libraries/pretest.proj | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libraries/pretest.proj b/src/libraries/pretest.proj index d913752e596d1..33dc5a88142e4 100644 --- a/src/libraries/pretest.proj +++ b/src/libraries/pretest.proj @@ -26,7 +26,9 @@ - + Date: Mon, 20 Nov 2023 15:44:06 -0800 Subject: [PATCH 33/45] Testing something... --- eng/Subsets.props | 3 +++ eng/testing/tests.singlefile.targets | 37 ++++++++++++++++++++++++++++ src/libraries/pretest.proj | 4 +-- 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/eng/Subsets.props b/eng/Subsets.props index 882c69fb160cb..066d23a746186 100644 --- a/eng/Subsets.props +++ b/eng/Subsets.props @@ -79,6 +79,9 @@ '$(BuildAllConfigurations)' == 'true'">libs.native+ $(DefaultLibrariesSubsets)libs.sfx+libs.oob+libs.pretest + + $(DefaultLibrariesSubsets)+packs + tools.illink host.native+host.tools+host.pkg diff --git a/eng/testing/tests.singlefile.targets b/eng/testing/tests.singlefile.targets index 267a734a2615e..f8bc0636ab487 100644 --- a/eng/testing/tests.singlefile.targets +++ b/eng/testing/tests.singlefile.targets @@ -107,6 +107,29 @@ + + + $(ArtifactsObjDir)Microsoft.NETCore.App.Bundle/ + $(ArtifactsNetCoreAppBundlePath)$(Configuration)/$(NetCoreAppCurrent)/$(OutputRID)/output/ + $(ArtifactsNetCoreAppBundlePath)shared/$(MicrosoftNetCoreAppFrameworkName)/$(PackageVersion)/ + + + + <_BundleAssembliesToCopy Include="$(ArtifactsNetCoreAppBundlePath)*.dll" /> + + + + + + + <_ReadyToRunAssembliesToReference Include="@(_BundleAssembliesToCopy)" /> + + + @@ -125,6 +148,20 @@ + + + + + + - + Date: Tue, 21 Nov 2023 14:04:00 -0800 Subject: [PATCH 34/45] Fixed the R2R-precompiled pack not built on time. --- eng/Subsets.props | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/eng/Subsets.props b/eng/Subsets.props index 066d23a746186..586e45ed48678 100644 --- a/eng/Subsets.props +++ b/eng/Subsets.props @@ -79,9 +79,6 @@ '$(BuildAllConfigurations)' == 'true'">libs.native+ $(DefaultLibrariesSubsets)libs.sfx+libs.oob+libs.pretest - - $(DefaultLibrariesSubsets)+packs - tools.illink host.native+host.tools+host.pkg @@ -486,6 +483,13 @@ + + + + + + + From 47760b3da74e024a21f00ebb8f68667bccc171dd Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Wed, 22 Nov 2023 11:35:48 -0800 Subject: [PATCH 35/45] Moved the R2R-precompiled runtime generation from Subsets.props to pretest.proj --- eng/Subsets.props | 7 ------- src/libraries/pretest.proj | 9 ++++++++- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/eng/Subsets.props b/eng/Subsets.props index 586e45ed48678..882c69fb160cb 100644 --- a/eng/Subsets.props +++ b/eng/Subsets.props @@ -483,13 +483,6 @@ - - - - - - - diff --git a/src/libraries/pretest.proj b/src/libraries/pretest.proj index d913752e596d1..e868134671603 100644 --- a/src/libraries/pretest.proj +++ b/src/libraries/pretest.proj @@ -26,7 +26,14 @@ - + + + + + + Date: Mon, 27 Nov 2023 12:28:35 -0800 Subject: [PATCH 36/45] Added the ArchiveTests property to get the test artifacts packed correctly for sending to Helix. --- eng/pipelines/coreclr/crossgen2.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/eng/pipelines/coreclr/crossgen2.yml b/eng/pipelines/coreclr/crossgen2.yml index 9366171fdd733..8b09713d1391e 100644 --- a/eng/pipelines/coreclr/crossgen2.yml +++ b/eng/pipelines/coreclr/crossgen2.yml @@ -71,6 +71,7 @@ extends: buildArgs: -s clr+libs+libs.tests -c $(_BuildConfig) /p:TestReadyToRun=true + /p:ArchiveTests=true nameSuffix: TestReadyToRun_Libraries timeoutInMinutes: 360 postBuildSteps: From 4262460dd61a271adeef8e93cc8bee1429344882 Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Mon, 27 Nov 2023 14:36:53 -0800 Subject: [PATCH 37/45] Excluded dotnet-host installers in TestReadyToRun builds because we don't need them there and they cause the build to fail otherwise. --- .../pkg/sfx/bundle/Microsoft.NETCore.App.Bundle.bundleproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/installer/pkg/sfx/bundle/Microsoft.NETCore.App.Bundle.bundleproj b/src/installer/pkg/sfx/bundle/Microsoft.NETCore.App.Bundle.bundleproj index 90f8d4ad2a28f..683832d70b429 100644 --- a/src/installer/pkg/sfx/bundle/Microsoft.NETCore.App.Bundle.bundleproj +++ b/src/installer/pkg/sfx/bundle/Microsoft.NETCore.App.Bundle.bundleproj @@ -25,8 +25,8 @@ - - + + From 403a5f974a00395487e496294976e3aa3e791398 Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Wed, 29 Nov 2023 16:12:12 -0800 Subject: [PATCH 38/45] Disabled System.Runtime.Loader.Tests because they can't be run due to a missing .NET error. --- src/libraries/tests.proj | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/libraries/tests.proj b/src/libraries/tests.proj index 0c6ef75b52a6a..77cf3d1adc717 100644 --- a/src/libraries/tests.proj +++ b/src/libraries/tests.proj @@ -522,6 +522,11 @@ + + + + + From 797f2c09db85f545f3d9b72f10356c0c46c942e7 Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Thu, 30 Nov 2023 10:40:57 -0800 Subject: [PATCH 39/45] Disabled the other faulty System.Runtime.Loader* test, and linked to a new tracking issue for those failures. --- src/libraries/tests.proj | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/libraries/tests.proj b/src/libraries/tests.proj index 77cf3d1adc717..102a054b0889e 100644 --- a/src/libraries/tests.proj +++ b/src/libraries/tests.proj @@ -523,8 +523,12 @@ - + + + + + From 048d35eddc4e23f75fcfc4ac3cb5abf97695fbea Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Tue, 5 Dec 2023 14:44:27 -0800 Subject: [PATCH 40/45] Fixed the live-ref-pack getting removed from publish files. --- eng/testing/tests.singlefile.targets | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/eng/testing/tests.singlefile.targets b/eng/testing/tests.singlefile.targets index f8bc0636ab487..1addf43e7320c 100644 --- a/eng/testing/tests.singlefile.targets +++ b/eng/testing/tests.singlefile.targets @@ -118,7 +118,10 @@ <_BundleAssembliesToCopy Include="$(ArtifactsNetCoreAppBundlePath)*.dll" /> - + From 993947250a9e2855335c8873fc56d7e92398803f Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Wed, 6 Dec 2023 14:07:29 -0800 Subject: [PATCH 41/45] Added a copy function --- eng/testing/tests.singlefile.targets | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/eng/testing/tests.singlefile.targets b/eng/testing/tests.singlefile.targets index 1addf43e7320c..620e82ea3ed0a 100644 --- a/eng/testing/tests.singlefile.targets +++ b/eng/testing/tests.singlefile.targets @@ -118,10 +118,7 @@ <_BundleAssembliesToCopy Include="$(ArtifactsNetCoreAppBundlePath)*.dll" /> - + @@ -165,6 +162,20 @@ + + + + + + Date: Wed, 6 Dec 2023 14:47:34 -0800 Subject: [PATCH 42/45] Forgot to actually set the files to copy. --- eng/testing/tests.singlefile.targets | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/eng/testing/tests.singlefile.targets b/eng/testing/tests.singlefile.targets index 620e82ea3ed0a..169f7218ab9aa 100644 --- a/eng/testing/tests.singlefile.targets +++ b/eng/testing/tests.singlefile.targets @@ -166,7 +166,11 @@ Condition="'$(TestReadyToRun)' == 'true'" AfterTargets="CopyExistingR2RBinaries"> - + + + + Date: Thu, 7 Dec 2023 10:50:39 -0800 Subject: [PATCH 43/45] Testing something... --- src/libraries/tests.proj | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libraries/tests.proj b/src/libraries/tests.proj index 6f84afc98481e..ac86d19eb5955 100644 --- a/src/libraries/tests.proj +++ b/src/libraries/tests.proj @@ -533,6 +533,9 @@ + + + From 7c97aa74f66bfc415bef45628f82c77163d2795e Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Tue, 12 Dec 2023 11:43:08 -0800 Subject: [PATCH 44/45] Changed the TestReadyToRun pipeline dynamics to only enable the tests we know work, rather than trying to find all that don't work and disable them. --- src/libraries/tests.proj | 46 ++++++++++++++++++++++++++++------------ 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/src/libraries/tests.proj b/src/libraries/tests.proj index ac86d19eb5955..81cbde30dc222 100644 --- a/src/libraries/tests.proj +++ b/src/libraries/tests.proj @@ -526,18 +526,6 @@ - - - - - - - - - - - - @@ -609,6 +597,31 @@ --> + + + + + + + + + + + + + + + + + + @@ -617,9 +630,16 @@ BuildInParallel="false" /> + - + + Date: Wed, 13 Dec 2023 14:59:56 -0800 Subject: [PATCH 45/45] Added comments to tests.singlefile.targets, and disabled the not-working tests with ProjectExclusions. --- eng/testing/tests.singlefile.targets | 35 ++++++++++++++++++++++++++++ src/libraries/tests.proj | 33 ++++++++++++-------------- 2 files changed, 50 insertions(+), 18 deletions(-) diff --git a/eng/testing/tests.singlefile.targets b/eng/testing/tests.singlefile.targets index 5ea42417cbc98..9e6e4d0b3589e 100644 --- a/eng/testing/tests.singlefile.targets +++ b/eng/testing/tests.singlefile.targets @@ -110,6 +110,13 @@ + @@ -125,6 +132,14 @@ + @@ -133,6 +148,12 @@ + @@ -142,6 +163,10 @@ + @@ -151,6 +176,12 @@ + @@ -165,6 +196,10 @@ + diff --git a/src/libraries/tests.proj b/src/libraries/tests.proj index 81cbde30dc222..a7c74feef0ca9 100644 --- a/src/libraries/tests.proj +++ b/src/libraries/tests.proj @@ -606,20 +606,20 @@ Tracking Issue for this work item: https://github.com/dotnet/runtime/issues/95928 --> - - - - - - - - - - - - - - + + + + + + + + + + + + + + @@ -630,15 +630,12 @@ BuildInParallel="false" /> - + and '$(RunLimitedSetOfTests)' != 'true'">