From 8ea7ea014aef9e60ac773462ded214ce21d78c7d Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Thu, 11 Jun 2026 08:25:30 +0200 Subject: [PATCH 1/8] Adjust mobile runtime test and build legs in CI pipelines Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../runtime-extra-platforms-ioslike.yml | 40 ------ ...ntime-extra-platforms-ioslikesimulator.yml | 34 ----- .../runtime-extra-platforms-maccatalyst.yml | 67 --------- eng/pipelines/performance/perf-build.yml | 4 +- eng/pipelines/runtime.yml | 135 ------------------ 5 files changed, 2 insertions(+), 278 deletions(-) diff --git a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml index 4b4c576ab3ee4a..6f9b02b443ba92 100644 --- a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml +++ b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml @@ -10,46 +10,6 @@ parameters: jobs: -# -# tvOS - 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 - isExtraPlatformsBuild: ${{ parameters.isExtraPlatformsBuild }} - isiOSLikeOnlyBuild: ${{ parameters.isiOSLikeOnlyBuild }} - platforms: - - tvos_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'] ] - - name: illinkContainsChange - value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'] ] - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - isExtraPlatforms: ${{ parameters.isExtraPlatformsBuild }} - # Don't trim tests on rolling builds - ${{ if eq(variables['isRollingBuild'], true) }}: - buildArgs: -s mono+libs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true $(_runSmokeTestsOnlyArg) /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=false /p:IsManualOrRollingBuild=true /p:EnableAggressiveTrimming=false - ${{ else }}: - buildArgs: -s mono+libs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true $(_runSmokeTestsOnlyArg) /p:BuildTestsOnHelix=true /p:EnableAdditionalTimezoneChecks=true /p:UsePortableRuntimePack=false /p:IsManualOrRollingBuild=true /p:EnableAggressiveTrimming=true - timeoutInMinutes: 240 - # extra steps, run tests - postBuildSteps: - - template: /eng/pipelines/libraries/helix.yml - parameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true - # # tvOS # Build the whole product using Mono and run runtime tests diff --git a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml index 1f9ca62d63d437..e1bdbf63d98cd8 100644 --- a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml +++ b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml @@ -10,40 +10,6 @@ parameters: jobs: -# -# iOSSimulator 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 - isExtraPlatformsBuild: ${{ parameters.isExtraPlatformsBuild }} - isiOSLikeSimulatorOnlyBuild: ${{ parameters.isiOSLikeSimulatorOnlyBuild }} - platforms: - - iossimulator_x64 - - iossimulator_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: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true $(_runSmokeTestsOnlyArg) /p:RunAOTCompilation=true /p:MonoForceInterpreter=true - timeoutInMinutes: 240 - # extra steps, run tests - postBuildSteps: - - template: /eng/pipelines/libraries/helix.yml - parameters: - creator: dotnet-bot - interpreter: true - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - # # iOSSimulator # Build the whole product using Mono and run runtime tests diff --git a/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml b/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml index 33275659ab10fe..e0691b611a7239 100644 --- a/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml +++ b/eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml @@ -10,39 +10,6 @@ parameters: jobs: -# -# 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 - isExtraPlatformsBuild: ${{ parameters.isExtraPlatformsBuild }} - isMacCatalystOnlyBuild: ${{ parameters.isMacCatalystOnlyBuild }} - platforms: - - maccatalyst_x64 - - maccatalyst_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: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=true /p:MonoForceInterpreter=true - timeoutInMinutes: 240 - # extra steps, run tests - postBuildSteps: - - template: /eng/pipelines/libraries/helix.yml - parameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - # # MacCatalyst interp - requires AOT Compilation and Interp flags # Build the whole product using Mono and run runtime tests @@ -90,40 +57,6 @@ jobs: testBuildArgs: /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=true /p:MonoForceInterpreter=true testRunNamePrefixSuffix: Mono_$(_BuildConfig) -# -# MacCatalyst interp - requires AOT Compilation and Interp flags -# Build the whole product using Mono and run libraries tests -# The test app is built with the App Sandbox entitlement -# -- 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 - isExtraPlatformsBuild: ${{ parameters.isExtraPlatformsBuild }} - isMacCatalystOnlyBuild: ${{ parameters.isMacCatalystOnlyBuild }} - platforms: - - maccatalyst_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: - testGroup: innerloop - nameSuffix: AllSubsets_Mono_AppSandbox - buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true $(_runSmokeTestsOnlyArg) /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:EnableAppSandbox=true - timeoutInMinutes: 180 - # extra steps, run tests - postBuildSteps: - - template: /eng/pipelines/libraries/helix.yml - parameters: - creator: dotnet-bot - interpreter: true - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - # # MacCatalyst # Build the whole product using Native AOT and run libraries tests diff --git a/eng/pipelines/performance/perf-build.yml b/eng/pipelines/performance/perf-build.yml index a4403ff6afcc59..fa295a829f7284 100644 --- a/eng/pipelines/performance/perf-build.yml +++ b/eng/pipelines/performance/perf-build.yml @@ -53,11 +53,11 @@ parameters: - name: mono_arm64_android displayName: Build Mono Arm64 Android type: boolean - default: true + default: false - name: mono_arm64_ios displayName: Build Mono Arm64 iOS type: boolean - default: true + default: false - name: monoBDN_arm64_android displayName: Build Mono Arm64 Android BDN (Not working) type: boolean diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 18afad1723cead..24217dc211b50d 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -882,11 +882,8 @@ extends: jobTemplate: /eng/pipelines/common/global-build-job.yml buildConfig: release platforms: - - android_x64 - browser_wasm - wasi_wasm - - ios_arm64 # tvos and ios use the same offsets so we only need to build once - - maccatalyst_x64 variables: - name: _osParameter value: -os linux @@ -924,7 +921,6 @@ extends: buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} runtimeFlavor: mono platforms: - - tvossimulator_arm64 - linux_x64 - linux_arm - linux_arm64 @@ -1080,48 +1076,6 @@ extends: publishArtifactsForWorkload: false publishWBT: false - # - # 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: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - - name: monoContainsChange - value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'] ] - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono_Smoke - buildArgs: -s mono+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:EnableAdditionalTimezoneChecks=true - 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: - - 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)) - # # Android arm/arm64 devices and x64 emulators # Build the whole product using CoreCLR and run functional tests @@ -1165,54 +1119,6 @@ extends: eq(variables['coreclrContainsChange'], true), eq(variables['isRollingBuild'], true)) - # - # iOS simulators - Full AOT + AggressiveTrimming to reduce size - # Build the whole product using Mono and run libraries tests - # Temporarily switched from ios_arm64 (devices) to iossimulator_arm64 due to - # device queue infrastructure failure: https://github.com/dotnet/runtime/issues/125135 - # - - 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: - - iossimulator_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'] ] - - name: illinkContainsChange - value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_illink.containsChange'] ] - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono_Smoke - 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=false /p:EnableAggressiveTrimming=true - 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(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_tools_illink.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['illinkContainsChange'], true), - eq(variables['isRollingBuild'], true)) - # # iOS simulators # Build the whole product using Native AOT and run libraries tests @@ -1305,47 +1211,6 @@ extends: eq(variables['illinkContainsChange'], 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_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: - testGroup: innerloop - nameSuffix: AllSubsets_Mono_Smoke - 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 - timeoutInMinutes: 180 - 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: - - 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)) - # # MacCatalyst # Build the whole product using Native AOT and run libraries tests From 4709e8663d90aca228df135d03f1417f61f542ed Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Wed, 10 Jun 2026 15:15:12 +0200 Subject: [PATCH 2/8] Update .NET 11 SDK to preview 6 (build 20260610.6) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- global.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/global.json b/global.json index 8d47900ffba1b7..3a3753fb4ceace 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "11.0.100-preview.5.26227.104", + "version": "11.0.100-preview.6.26310.106", "allowPrerelease": true, "rollForward": "major", "paths": [ @@ -10,7 +10,7 @@ "errorMessage": "The required .NET SDK wasn't found. Please run ./eng/common/dotnet.sh (Unix) or eng\\common\\dotnet.cmd (Windows) to install it." }, "tools": { - "dotnet": "11.0.100-preview.5.26227.104" + "dotnet": "11.0.100-preview.6.26310.106" }, "msbuild-sdks": { "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26302.118", From c96edac94131a37f7c47ee1c4b1f37d6d963e373 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Wed, 10 Jun 2026 16:47:20 +0200 Subject: [PATCH 3/8] Use validation package feed for SDK packages Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- NuGet.config | 1 + 1 file changed, 1 insertion(+) diff --git a/NuGet.config b/NuGet.config index 8d2d351914d014..123dc38845c1d2 100644 --- a/NuGet.config +++ b/NuGet.config @@ -7,6 +7,7 @@ + @@ -714,6 +713,10 @@ <_BuildMonoRuntimePack Condition="'$(PrimaryRuntimeFlavor)' == 'Mono'">true + + <_BuildMonoRuntimePack> + + <_BuildNativeAOTRuntimePack Condition="'$(NativeAOTSupported)' == 'true'">true <_BuildHostPack Condition="'$(TargetsMobile)' != 'true' and !('$(TargetsLinuxBionic)' == 'true' and '$(TargetArchitecture)' == 'arm')">true From 924ddcd6e22a58d440e95e63b1b8056ad630c0e5 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Fri, 19 Jun 2026 08:59:51 +0200 Subject: [PATCH 5/8] Revert global.json SDK bump and NuGet.config general-testing feed Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- NuGet.config | 1 - global.json | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/NuGet.config b/NuGet.config index 123dc38845c1d2..8d2d351914d014 100644 --- a/NuGet.config +++ b/NuGet.config @@ -7,7 +7,6 @@ - <_BuildCoreCLRRuntimePack Condition="'$(PrimaryRuntimeFlavor)' == 'CoreCLR'">true - <_BuildMonoRuntimePack Condition="'$(PrimaryRuntimeFlavor)' == 'Mono'">true - - - - <_BuildMonoRuntimePack> + <_BuildMonoRuntimePack Condition="'$(PrimaryRuntimeFlavor)' == 'Mono' and '$(TargetsAppleMobile)' != 'true' and '$(TargetOS)' != 'android'">true From 56f36d18f2f28c40b049bff7a2bec1619e701e41 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Fri, 19 Jun 2026 09:04:20 +0200 Subject: [PATCH 7/8] Guard MonoCrossAOTTargetOS default so caller overrides are respected Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- eng/Subsets.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Subsets.props b/eng/Subsets.props index 21365c43f2ec79..61b22964583ae6 100644 --- a/eng/Subsets.props +++ b/eng/Subsets.props @@ -85,7 +85,7 @@ - browser+wasi + browser+wasi From e534a7f6bec4bc5947b9787ab06068a71c236f04 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Fri, 19 Jun 2026 09:19:38 +0200 Subject: [PATCH 8/8] Trim DotNetBuildMonoCrossAOT target list to browser+wasi Removes Android and Apple (tvos/ios/maccatalyst) from MonoCrossAOTTargetOS so DotNetBuildMonoCrossAOT builds no longer produce Mono mobile cross-AOT packs, matching the default trimmed in eng/Subsets.props. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- Directory.Build.props | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index e9d93efb2aecfa..fbe49f05431a06 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -178,8 +178,7 @@ true - android+browser+wasi - $(MonoCrossAOTTargetOS)+tvos+ios+maccatalyst + browser+wasi