Skip to content

Reduce Apple mobile CI matrix#125441

Open
kotlarmilos wants to merge 29 commits intodotnet:mainfrom
kotlarmilos:reduce-apple-ci-matrix
Open

Reduce Apple mobile CI matrix#125441
kotlarmilos wants to merge 29 commits intodotnet:mainfrom
kotlarmilos:reduce-apple-ci-matrix

Conversation

@kotlarmilos
Copy link
Copy Markdown
Member

@kotlarmilos kotlarmilos commented Mar 11, 2026

Description

Reduce the Apple mobile CI test matrix to mitigate macOS queue congestion and align with the default scenarios.

What runs where

runtime.yml — ios + maccatalyst arm64 smoke (6 jobs)

Platform Runtime Test type Config
ios_arm64 Mono Library smoke Release
ios_arm64 NativeAOT Library smoke Release
ios_arm64 CoreCLR Library smoke Release
maccatalyst_arm64 Mono Library smoke Release
maccatalyst_arm64 NativeAOT Library smoke Release
maccatalyst_arm64 CoreCLR Library smoke Release

runtime-extra-platforms-ioslike.yml — tvos full + Debug smoke (6 jobs)

Platform Runtime Test type Config
tvos_arm64 Mono Library tests Release
tvos_arm64 Mono Runtime tests Release
tvos_arm64 NativeAOT Library smoke Release
tvos_arm64 CoreCLR Library tests Release
tvos_arm64 CoreCLR Runtime tests Release
tvos_arm64 CoreCLR Library smoke Debug

runtime-extra-platforms-ioslikesimulator.yml — iossimulator Release + Debug smoke (9 jobs)

Platform Runtime Test type Config
iossimulator_x64, iossimulator_arm64 Mono Library tests Release
iossimulator_arm64 Mono Runtime tests Release
iossimulator_x64, iossimulator_arm64 NativeAOT Library smoke Release
iossimulator_x64, iossimulator_arm64 CoreCLR Library tests Release
iossimulator_arm64 CoreCLR Runtime tests Release
iossimulator_arm64 CoreCLR Library smoke Debug

runtime-extra-platforms-maccatalyst.yml — maccatalyst full + Debug smoke (12 jobs)

Platform Runtime Test type Config
maccatalyst_x64, maccatalyst_arm64 Mono Library tests Release
maccatalyst_arm64 Mono Runtime tests Release
maccatalyst_arm64 Mono Library smoke (AppSandbox) Release
maccatalyst_x64, maccatalyst_arm64 NativeAOT Library smoke Release
maccatalyst_arm64 NativeAOT Library smoke (AppSandbox) Release
maccatalyst_x64, maccatalyst_arm64 CoreCLR Library tests Release
maccatalyst_arm64 CoreCLR Runtime tests Release
maccatalyst_arm64 CoreCLR Library smoke (AppSandbox) Release
maccatalyst_arm64 CoreCLR Library smoke Debug

Other changes

  • Re-enabled 3 tvOS test suites that were previously excluded due to mysterious crashes (System.IO.Hashing.Tests, System.IO.MemoryMappedFiles.Tests, System.Runtime.Numerics.Tests)
  • Entries reordered consistently: Mono → NativeAOT → CoreCLR, library → runtime within each group

Copilot AI review requested due to automatic review settings March 11, 2026 13:52
@kotlarmilos kotlarmilos changed the title Reduce Apple mobile CI matrix to alleviate macOS queue congestion Reduce Apple mobile CI matrix Mar 11, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Reduces macOS CI load by shrinking the Apple mobile test matrix (iOS/tvOS simulators/devices and MacCatalyst), aiming to keep coverage focused on common developer/user scenarios while removing redundant jobs.

Changes:

  • runtime.yml: drop tvOS device from mobile smoke jobs and remove the MacCatalyst Mono smoke entry.
  • runtime-extra-platforms-ioslike.yml: shift iOS-like device coverage to tvOS-only.
  • runtime-extra-platforms-ioslikesimulator.yml: focus simulator coverage on iOS simulator only, switch to Debug, and remove NativeAOT simulator runtime tests.
  • runtime-extra-platforms-maccatalyst.yml: remove MacCatalyst x64 coverage (arm64 only).

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 7 comments.

File Description
eng/pipelines/runtime.yml Removes tvOS device and MacCatalyst smoke jobs from the default runtime pipeline’s Apple-mobile matrix.
eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml Removes iOS device runs so iOS-like device testing is tvOS-only in extra-platforms.
eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml Narrows simulator jobs to iOS simulator, switches to Debug, and drops NativeAOT simulator runtime tests.
eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml Drops MacCatalyst x64 from extra-platforms, leaving arm64 only.

You can also share your feedback on Copilot code review. Take the survey.

@vitek-karas
Copy link
Copy Markdown
Member

I didn't look at the existing coverage, so maybe this is already covered:

  • I think we should have at least some basic testing of Release builds running on simulators (simulator is different enough platform from iOS, such that it warrants at least basic coverage)
  • Similarly we should have at least basic coverage for running Debug builds on real devices (while not as common, it IS a scenario for users) - this should include both iOS and tvOS devices.
  • macCatalyst - we should have some coverage for both Debug and Release (since both are scenarios for that target)

Reduce the Apple mobile test matrix from 47 to 24 jobs (-23 per run),
restructured around real user scenarios:

- runtime.yml: iOS-only smoke tests (8 -> 3 jobs)
  Remove tvos_arm64 from smoke tests, remove maccatalyst Mono_Smoke

- ioslike.yml: tvOS devices only in Release (12 -> 6 jobs)
  Remove ios_arm64 (covered by runtime.yml smoke)

- ioslikesimulator.yml: iossimulator only in Debug (15 -> 8 jobs)
  Remove tvossimulator, change Release to Debug, drop NativeAOT

- maccatalyst.yml: arm64 only (12 -> 7 jobs)
  Remove maccatalyst_x64 (Intel Macs EOL)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings March 12, 2026 10:01
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 5 out of 5 changed files in this pull request and generated no new comments.


You can also share your feedback on Copilot code review. Take the survey.

Copilot AI review requested due to automatic review settings March 12, 2026 10:16
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.


You can also share your feedback on Copilot code review. Take the survey.

kotlarmilos and others added 4 commits March 12, 2026 11:24
- Restore MacCatalyst Mono + CoreCLR + NativeAOT smoke in runtime.yml
- Add NativeAOT library smoke to ioslikesimulator and maccatalyst
- Replace NativeAOT runtime tests with library tests in maccatalyst
- Add CoreCLR AppSandbox library tests for maccatalyst
- Change maccatalyst CoreCLR x64+arm64 from smoke to full library tests
- Use x64 only for library tests in ioslikesimulator
- Reorder entries: Mono > NativeAOT > CoreCLR, library > runtime

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…uce-apple-ci-matrix

# Conflicts:
#	eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml
#	eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml
Copilot AI review requested due to automatic review settings March 12, 2026 11:07
Copilot AI review requested due to automatic review settings March 25, 2026 09:13
@kotlarmilos
Copy link
Copy Markdown
Member Author

I agree that it overlaps with devices but I considered iOS simulator a different platform (more different than Android devices and emulators) so they deserve to be tested.

Ok, sounds good. Reverted to test Release.

One interesting question could be: historically, has either of the configurations found issues that didn't show in the other one?

Yes, sometimes a debug assert is hit. For that reason, it introduces just one job for the default config per platform to run in Debug to catch such errors.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated 1 comment.

kotlarmilos and others added 2 commits March 25, 2026 10:26
Add maccatalyst_arm64 smoke tests for all three runtimes to the
default pipeline to catch PR breakages early.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings March 25, 2026 09:33
@kotlarmilos kotlarmilos marked this pull request as ready for review March 25, 2026 09:33
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated no new comments.

@kotlarmilos
Copy link
Copy Markdown
Member Author

Impact of this PR:

  • Complete testing matrix (CoreCLR, Native AOT, Mono)
  • Number of jobs in PR pipeline didn't change
  • Number of jobs in extra-platforms reduced by 12 per run
  • Reduced test coverage on x64 simulators and x64 MacCatalyst to library tests only
  • Removed test coverage on tvossimulators - considered redundant with iossimulators

@dotnet-policy-service
Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/runtime-infrastructure
See info in area-owners.md if you want to be subscribed.

Copy link
Copy Markdown
Member

@matouskozak matouskozak left a comment

Choose a reason for hiding this comment

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

LGTM! Thanks a lot. Let's monitor for a few days the times of the iOS device runs from runtime pipeline and see if they are able to handle the load well.

testGroup: innerloop
nameSuffix: AllSubsets_NativeAOT_Smoke
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
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

The NativeAOT jobs outside of runtime.yml do not set useNativeAOTRuntime: true. Just a nit I don't think it's doing anything special.

Copy link
Copy Markdown
Member

@steveisok steveisok left a comment

Choose a reason for hiding this comment

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

I'm supportive. I think devices are still going to have a hard time when they get into a state of needing to be rebooted.

@kotlarmilos
Copy link
Copy Markdown
Member Author

/azp run runtime-ioslike,runtime-ioslikesimulator,runtime-maccatalyst

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 3 pipeline(s).

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

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

6 participants