Skip to content

[mobile] .NET 11 mobile runtime configuration updates#129293

Open
kotlarmilos wants to merge 6 commits into
mainfrom
dev/update-sdk-mobile
Open

[mobile] .NET 11 mobile runtime configuration updates#129293
kotlarmilos wants to merge 6 commits into
mainfrom
dev/update-sdk-mobile

Conversation

@kotlarmilos

@kotlarmilos kotlarmilos commented Jun 11, 2026

Copy link
Copy Markdown
Member

Description

Remove the Mono mobile test legs from the runtime CI pipelines:

  • eng/pipelines/runtime.yml: the Mono mobile smoke legs (android, iossimulator, maccatalyst), the mobile platforms dropped from MonoAOTOffsets (kept browser_wasm and wasi_wasm), and tvossimulator_arm64 dropped from the Mono AllSubsets_Mono build leg.
  • eng/pipelines/extra-platforms/runtime-extra-platforms-{ioslike,ioslikesimulator,maccatalyst}.yml: the Mono AllSubsets_Mono_RuntimeTests legs.
  • eng/pipelines/extra-platforms/runtime-extra-platforms-{android,androidemulator}.yml: the Mono libraries-test and runtime-test legs.
  • eng/pipelines/performance/perf-build.yml: the mono_arm64_android and mono_arm64_ios build types are removed entirely (parameters and build legs), not left as disabled parameters.

WebAssembly Mono, desktop Mono, and the CoreCLR/NativeAOT mobile legs are untouched.

Validation pipelines (must pass): runtime, runtime-extra-platforms. wasm legs stay green.

Validation pins (temporary): pinned to .NET 11 test build 11.0.100-preview.6.26310.106 (AzDO dotnet-unified-build run 2996804, BAR 318158, source dotnet/dotnet@8d5d82abe13, branch dev/update-sdk-mobile-stage2) and the public general-testing NuGet feed, so CI exercises the SDK with the Mono mobile workloads and RIDs removed.

Related performance changes: dotnet/performance#5240

TODO before merge: revert the global.json SDK pin and the NuGet.config feed back to the official VMR version and the main feed.

kotlarmilos and others added 3 commits June 11, 2026 13:40
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @akoeplinger, @matouskozak, @simonrozsival
See info in area-owners.md if you want to be subscribed.

@github-actions

This comment has been minimized.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the .NET 11 mobile-related CI configuration by reducing Mono mobile coverage in runtime pipelines and adjusting repo-level SDK / restore inputs to validate against a temporary SDK + feed combination.

Changes:

  • Add the general-testing NuGet feed to the repo restore sources.
  • Pin global.json to a specific .NET 11 preview SDK version for validation.
  • Remove Mono mobile library-test legs from runtime.yml / extra-platform pipelines, and disable Mono mobile perf-build legs by default.
Show a summary per file
File Description
NuGet.config Adds general-testing package source (temporary validation input).
global.json Pins repo SDK/tooling to 11.0.100-preview.6.26310.106 (temporary validation input).
eng/pipelines/runtime.yml Removes Mono mobile library-test legs from the main runtime pipeline (keeps WASM/CoreCLR/NativeAOT legs).
eng/pipelines/performance/perf-build.yml Disables Mono Android/iOS perf build legs by default (still available when enabled).
eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml Removes Mono MacCatalyst libraries-test legs.
eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml Removes Mono iOS-simulator libraries-test legs.
eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml Removes Mono tvOS libraries-test legs.

Copilot's findings

Comments suppressed due to low confidence (1)

NuGet.config:14

  • Adding general-testing as an always-on package source can change restore behavior (e.g., pulling newer prerelease packages) for both CI and local builds. If this is meant to be a temporary validation pin, consider adding an inline note here to reduce the risk of accidentally merging with the extra feed still enabled.
  <packageSources>
    <clear />
    <add key="general-testing" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/general-testing/nuget/v3/index.json" />
    <!--
      'src/test/PrepareTestAssets/PrepareTestAssets.proj' generates a NuGet.config file using this
      one as a template. The following line is a marker to insert the test restore sources.
    -->
  • Files reviewed: 7/7 changed files
  • Comments generated: 2

Comment thread eng/pipelines/performance/perf-build.yml Outdated
Comment thread global.json
Remove the Mono mobile runtime-test legs (tvos, iossimulator, maccatalyst)
and the Mono mobile libraries-test legs (android devices and emulator) from
the extra-platforms pipelines, and remove the Mono mobile build types from
the perf build instead of leaving them as disabled parameters. CoreCLR,
NativeAOT, desktop Mono and wasm Mono legs are unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions

This comment has been minimized.

@kotlarmilos

Copy link
Copy Markdown
Member Author

/azp run runtime-extra-platforms

@kotlarmilos kotlarmilos marked this pull request as ready for review June 12, 2026 08:21
Copilot AI review requested due to automatic review settings June 12, 2026 08:21
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

Remove the run_android_mono_jit and run_android_mono_aot parameters, their
include-gate references, and the forwarding overrides, matching the removal
of the Android Mono JIT/AOT job groups in runtime-perf-jobs.yml. Android
CoreCLR and desktop Mono perf toggles are kept.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 10/10 changed files
  • Comments generated: 4

Comment thread global.json
Comment thread NuGet.config
@github-actions

This comment has been minimized.

… templates

The iOS simulator and MacCatalyst CoreCLR jobs referenced isiOSLikeOnlyBuild,
which is not declared in those templates' parameters and is not passed by
runtime-extra-platforms.yml. Use each template's declared flag
(isiOSLikeSimulatorOnlyBuild and isMacCatalystOnlyBuild) so the templates are
self-contained and gated consistently with their sibling jobs.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 12, 2026 08:58
@kotlarmilos

Copy link
Copy Markdown
Member Author

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@github-actions

Copy link
Copy Markdown
Contributor

🤖 Copilot Code Review — PR #129293

Holistic Assessment

Motivation: Justified. .NET 11 is transitioning mobile platforms from Mono to CoreCLR/NativeAOT. Removing all Mono mobile CI test legs aligns the pipeline with that direction. CoreCLR and NativeAOT mobile legs remain intact, preserving test coverage for the new runtime stack.

Approach: Clean, deletion-only removal of Mono mobile legs across all relevant pipeline files, plus bonus fixes for pre-existing parameter name mismatches. The temporary SDK/NuGet pins are clearly marked as revert-before-merge.

Summary: ⚠️ Needs Human Review. The pipeline removals are consistent, complete, and well-scoped. The PR also fixes two pre-existing parameter name bugs in ioslikesimulator.yml and maccatalyst.yml (previous reviews noted these as "pre-existing" but didn't fully recognize this PR corrects them). The only blocking item is the temporary SDK pin and NuGet feed, which must be reverted before merge — the mergeable_state is blocked, so accidental merge is prevented.


Detailed Findings

✅ Pipeline Removals — Consistent and complete

All Mono mobile test legs are cleanly removed across all pipeline files. Verified every deleted block had runtimeFlavor: mono targeting mobile platforms:

File Mono Legs Removed CoreCLR/NativeAOT Legs Intact
runtime.yml Mono Android smoke, Mono iOS simulator smoke, Mono MacCatalyst smoke, mobile MonoAOTOffsets, tvossimulator_arm64 from AllSubsets_Mono
android.yml 1 lib-test leg (android_arm/arm64)
androidemulator.yml 3 legs (minijit + interpreter runtime-tests, lib-test)
ioslike.yml 2 legs (tvOS AOT lib-test + runtime-test)
ioslikesimulator.yml 2 legs (interp lib-test + runtime-test)
maccatalyst.yml 3 legs (interp lib-test, runtime-test, AppSandbox lib-test)

WASM Mono and desktop Mono legs are untouched — 12 runtimeFlavor: mono instances remain in runtime.yml, all targeting correct desktop/server platforms.

✅ Parameter Name Fixes — Correct bug fixes

The PR fixes two pre-existing parameter mismatches that would have caused legs to not be properly gated:

  • ioslikesimulator.yml: Two legs changed from isiOSLikeOnlyBuildisiOSLikeSimulatorOnlyBuild, correctly matching the file's declared parameter (line 8). All 3 remaining active legs now use the correct parameter name.
  • maccatalyst.yml: One leg changed from isiOSLikeOnlyBuildisMacCatalystOnlyBuild, correctly matching the file's declared parameter (line 8). All 6 remaining active legs now use the correct parameter name.

These are genuine fixes — the old code referenced a parameter that didn't exist in the template, causing those filter expressions to silently evaluate to empty/false.

✅ Perf Build — Parameters fully removed

perf-build.yml fully removes mono_arm64_android and mono_arm64_ios parameter declarations and all three stage references. monoBDN_arm64_android and nativeAot_arm64_ios are correctly retained.

✅ Perf Gapfill — Toggles and condition correctly updated

perf-gapfill.yml removes run_android_mono_jit and run_android_mono_aot from parameters, the or() inclusion condition, and the override blocks. No dangling references remain.

✅ No Dangling References — Clean removal

Searched across all eng/pipelines/ files: zero remaining references to mono_arm64_android, mono_arm64_ios, androidMonoJit, or androidMonoAot. The external template runtime-perf-jobs.yml@performance will simply use defaults for the now-omitted parameters — no mismatch risk.

⚠️ Temporary Pins — Must be reverted before merge (merge-blocking)

  1. global.json: SDK version pinned to 11.0.100-preview.6.26310.106 (both sdk.version and tools.dotnet updated consistently ✅)
  2. NuGet.config: general-testing feed added at highest priority position (before all other sources)

Both are explicitly tracked in the PR description's TODO. The author confirmed in review comments these will be reverted. Merge is currently blocked.

💡 Dead code — Follow-up cleanup opportunity

eng/pipelines/performance/templates/perf-ios-scenarios-build-jobs.yml contains a mono: false parameter with Mono iOS build steps, but no file in the repo references this template — it's unreachable dead code. Not introduced by this PR, but could be cleaned up in a follow-up.

Note

This review was generated by Copilot.

Generated by Code Review for issue #129293 · ● 12M ·

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants