From 0682b5028ddd5560f5a5664456275932ae0fe6b2 Mon Sep 17 00:00:00 2001 From: David Wrighton Date: Wed, 25 Mar 2026 16:21:55 -0700 Subject: [PATCH 1/4] Reduce WASM and Mono Android PR pipeline jobs on library changes - Add shouldRunSmokeOnly: onLibrariesAndIllinkChanges to browser_wasm_win Mono WASM library tests, so they run smoke-only when only libraries or illink changed. browser_wasm (Linux) keeps full test suite, ensuring at least 1 full Mono WASM run per library PR. - Remove libraries.containsChange and installer.containsChange from the Mono Android (android_arm, android_arm64) build+test condition. Mono Android now only runs when mono code changes or on rolling builds. CoreCLR Android jobs remain unchanged for continued Android PR coverage. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- eng/pipelines/runtime.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 235d4387e76cb2..6cced8eea91227 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -952,6 +952,7 @@ extends: platforms: - browser_wasm_win alwaysRun: ${{ variables.isRollingBuild }} + shouldRunSmokeOnly: onLibrariesAndIllinkChanges extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) scenarios: - WasmTestOnChrome @@ -1071,8 +1072,6 @@ extends: - android_arm64 variables: # map dependencies variables to local variables - - name: librariesContainsChange - value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - name: monoContainsChange value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] jobParameters: @@ -1082,9 +1081,7 @@ extends: timeoutInMinutes: 120 condition: >- or( - eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), - eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), eq(variables['isRollingBuild'], true)) # extra steps, run tests postBuildSteps: @@ -1094,7 +1091,6 @@ extends: testRunNamePrefixSuffix: Mono_$(_BuildConfig) condition: >- or( - eq(variables['librariesContainsChange'], true), eq(variables['monoContainsChange'], true), eq(variables['isRollingBuild'], true)) From 5bbfed7ff5592623c9fe3840d0705e7b77d63577 Mon Sep 17 00:00:00 2001 From: David Wrighton Date: Wed, 25 Mar 2026 16:29:00 -0700 Subject: [PATCH 2/4] Reduce Mono MiniJIT Library Tests to linux_arm64 on library PRs Split the Mono_MiniJIT_LibrariesTests job into two blocks: - linux_arm64: runs on library changes, mono changes, and rolling builds - linux_x64 + osx_x64: runs only on mono changes and rolling builds This saves 2 helix jobs on library-only PRs while maintaining full platform coverage when mono code is explicitly changed. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- eng/pipelines/runtime.yml | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 6cced8eea91227..4496564c0dc365 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -1932,7 +1932,8 @@ extends: eq(variables['isRollingBuild'], true)) # - # Build and test Mono Minijit with the libraries testss + # Build and test Mono Minijit with the libraries tests + # linux_arm64 runs on both library and mono changes # - template: /eng/pipelines/common/platform-matrix.yml parameters: @@ -1942,6 +1943,33 @@ extends: runtimeFlavor: mono platforms: - linux_arm64 + jobParameters: + testGroup: innerloop + nameSuffix: Mono_MiniJIT_LibrariesTests + buildArgs: -s mono+libs+libs.tests -rc Release -c $(_BuildConfig) /p:ArchiveTests=true + timeoutInMinutes: 480 + # extra steps, run tests + postBuildSteps: + - template: /eng/pipelines/libraries/helix.yml + parameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_Minijit_$(_BuildConfig) + condition: >- + or( + eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + # + # Additional Mono Minijit platforms - only when mono explicitly changes + # + - 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: ${{ variables.debugOnPrReleaseOnRolling }} + runtimeFlavor: mono + platforms: - linux_x64 - osx_x64 #- windows_x64 @@ -1958,6 +1986,5 @@ extends: testRunNamePrefixSuffix: Mono_Minijit_$(_BuildConfig) condition: >- or( - eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true), eq(variables['isRollingBuild'], true)) From da0990f12ec7712995cf19bf331ef3179b892fea Mon Sep 17 00:00:00 2001 From: David Wrighton Date: Wed, 25 Mar 2026 16:42:01 -0700 Subject: [PATCH 3/4] Drop Firefox from Mono WASM full run and AOT Smoke from browser_wasm_win - Remove WasmTestOnFirefox scenario from the browser_wasm Mono library tests. Firefox coverage is retained on rolling builds via the extra-platforms pipeline. - Remove browser_wasm_win from AOT Smoke tests. browser_wasm (Linux) still runs AOT Smoke. Windows AOT Smoke coverage continues on rolling builds. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- eng/pipelines/runtime.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 4496564c0dc365..aa13c17068af97 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -945,7 +945,6 @@ extends: extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) scenarios: - WasmTestOnChrome - - WasmTestOnFirefox - template: /eng/pipelines/common/templates/wasm-library-tests.yml parameters: @@ -997,7 +996,6 @@ extends: parameters: platforms: - browser_wasm - - browser_wasm_win nameSuffix: _Smoke_AOT runAOT: true buildAOTOnHelix: false From f727219be0380876180e5c78e5915ae82b16940f Mon Sep 17 00:00:00 2001 From: David Wrighton Date: Thu, 26 Mar 2026 14:01:31 -0700 Subject: [PATCH 4/4] Add Firefox scenario to WASM AOT Smoke tests Add WasmTestOnFirefox to the browser_wasm AOT Smoke test scenarios to retain some Firefox coverage in the default PR pipeline, since Firefox was removed from the Mono WASM full library test run. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- eng/pipelines/runtime.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index aa13c17068af97..45508f5d680220 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -1002,6 +1002,9 @@ extends: shouldRunSmokeOnly: true alwaysRun: ${{ variables.isRollingBuild }} extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS) + scenarios: + - WasmTestOnChrome + - WasmTestOnFirefox # For Wasm.Build.Tests - runtime pack builds - template: /eng/pipelines/common/templates/wasm-build-only.yml