Repository navigation
Conversation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Contributor
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 38852Or
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 38852" |
|
Azure Pipelines: Successfully started running 1 pipeline(s). There may be pipelines that require an authorized user to comment /azp run to run. |
Contributor
There was a problem hiding this comment.
Copilot review overview
🔵 Needs a closer look
Final human review is recommended for the official build pipeline changes.
Review effort: Lite
Findings: None
What changed in this PR
Updates official macOS builds to use the GoldenGate AcesShared pool and image-selected Xcode, with regression coverage.
Changes:
- Updates macOS pool and image settings.
- Skips Xcode provisioning.
- Adds regression tests for routing and preserved behavior.
| File | Description |
|---|---|
eng/pipelines/ci-official.yml |
Configures GoldenGate macOS builds and skips Xcode provisioning. |
eng/pipelines/ci-official.Tests.ps1 |
Adds regression coverage for pipeline behavior. |
kubaflo
added a commit
that referenced
this pull request
Sep 24, 2026
…38853) <!-- Please let the below note in for people that find this PR --> > [!NOTE] > Are you waiting for the changes in this PR to be merged? > It would be very helpful if you could [test the resulting artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ### Description of Change **Temporary RC2 workaround:** use the GoldenGate image from #38852 until the standard macOS images provide Xcode compatible with the pinned Apple SDK. Explicit source comments identify the workaround and its removal condition in all three pipeline entry points and the shared configuration. All public and internal macOS pool defaults are aligned: | Pipeline | macOS coverage | |---|---| | `maui-pr` (`ci.yml`) | Build, pack, and integration pool defaults | | `maui-pr-uitests` (`ci-uitests.yml`) | Shared app builds, iOS UI runs, and MacCatalyst UI runs | | `maui-pr-devicetests` (`ci-device-tests.yml`) | Mono/CoreCLR app builds and all macOS pool defaults | - Use `AcesShared` with `ImageOverride -equals $(AcesMacImageOverride)` throughout these macOS defaults. Select `ACES_VM_SharedPool_GoldenGate` once in `common/variables.yml`, independently of Azure Pipelines' hosted-image setting. No exact Xcode application paths are embedded in pipeline demands. - Accept the image-selected Xcode only when its reported major/minor version matches `$(XCODE)`. This handles GoldenGate's nonstandard prerelease bundle name while retaining the existing named-bundle fallback and explicit incompatible-version failure. The fast path is also marked temporary. - Preserve simulator provisioning. Unlike the official pack-only job in #38852, iOS UI-test jobs need simulator setup; copying `skipXcode: true` would suppress it. - Retain caller-supplied pool overrides, SDK/Xcode version pins, test filters, Helix execution queues, and Windows/Android-Linux settings. The separate official-pipeline change in #38852 is not modified here. - Remove `eng/pipelines/ci.Tests.ps1`. No pipeline configuration tests are added. ### Failure evidence The old Aces Tahoe image contains Xcode 26.x, while RC2 requires Xcode 27: - [UI build 1609520](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1609520&view=logs): `Required Xcode 27.0 is not installed on this agent`; installed versions stop at 26.6. - [Device build 1609521](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1609521&view=logs): the same failure in both Mono and CoreCLR app builds. - [UI build 1607914](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1607914&view=results) also failed during iOS 27 simulator provisioning. Runtime provisioning safeguards remain enabled. ### Validation YAML parsing, configuration inspection of all 14 macOS pool defaults, Bash syntax checks, and `git diff --check` pass. Full Azure DevOps validation of the latest revision is pending. ### Issues Fixed N/A — temporary RC2 CI provisioning workaround based on the linked builds. Unrelated device-test assertion failures are outside this PR's scope. --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
kubaflo
added a commit
that referenced
this pull request
Oct 9, 2026
<!-- Please let the below note in for people that find this PR --> > [!NOTE] > Are you waiting for the changes in this PR to be merged? > It would be very helpful if you could [test the resulting artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! <!-- !!!!!!! MAIN IS THE ONLY ACTIVE BRANCH. MAKE SURE THIS PR IS TARGETING MAIN. !!!!!!! --> ### Description of Change <!-- Enter description of the fix in this section --> Intentionally targets **net11.0**, based on `8d04ca676fc51a8f940f65dfbec9a8085fa13615`, rather than main or RC2. Ports the Apple-specific Xcode 27 adoption from `release/11.0.1xx-rc2` without changing net11's SDK, runtime, Android, Extensions, or Arcade pins. - Pin all four .NET 11 Apple SDKs to **27.0.12211-net11-rc.2** from macios commit `35d8bf5a42cd71edf4e2700b1e45f6c4b65f3fbe` (BAR 334217, RC2 channel), and update current/default iOS, tvOS, Mac Catalyst and macOS platform TFMs to 27.0. - Align the .NET 10 Apple compatibility SDKs to **26.5.10322**, required by all four selected .NET 11 workload manifests; update their coherent-parent names and public feed. This is required manifest alignment, not an unrelated .NET 10 upgrade. - Raise managed and native iOS deployment minimums to **15.0**. Native iOS 12 / Catalyst's mapped macOS 10.15 targets are rejected by Xcode 27. The managed Catalyst minimum remains 17.0; templates already use iOS 15 / Catalyst 17. - Select **GoldenGate / Xcode 27** for public and internal Apple framework, pack, integration, UI-app, device-app and official compilation. Continue executing prebuilt iOS UI-test apps on **Tahoe / Xcode 26.5**, and Catalyst UI tests on **macOS 14**. - Remove the obsolete repository-wide Xcode 26.2/26.3 validation bypass and unconditional `eng/Build.props` overrides. Normal builds now let the workload validate Xcode; explicit test/review-runner overrides remain available. - Document build requirements and remaining image limitations in `docs/DevelopmentTips.md`. **Evidence and retained workarounds** The RC2 adoption/CI changes are in #38787, #38788, #38853, #38855 and #38892. #38806 deliberately omitted Apple 27 / minimum-version / pool changes when forward-porting to net11; this supplies that missing Apple configuration. Icon Composer changes from #38984 are already on net11 and are not duplicated. - Keep the GoldenGate compilation fallback: standard Azure hosted macOS 26 currently provides only Xcode 26.0–26.6. The Xcode 27 preview pool is not a proven standard Azure-hosted replacement; no paid pool is introduced. [Azure image availability](https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/hosted?view=azure-devops), [Xcode 27 image discussion](actions/runner-images#14404 (comment)). - Keep the Appium build/execution split: GoldenGate previously lacked the required iOS 18.5 runtime / usable Simulator UI and failed Mac2 startup; corrected RC2 build 1611447 passed all 29 iOS jobs. Current RC2 UI failures occur during package restore and do not establish that GoldenGate UI execution is fixed. macOS 14 retires November 2, 2026; its replacement requires separate Mac2 validation. - Keep simulator provisioning, architecture-specific downloads, bounded recovery and explicit failure when required Xcode is missing. Do not copy #38852's unmerged `skipXcode: true` shortcut. - **Do not port** GoldenGate's prerelease selected-Xcode fast path: [RC2 build 1623906](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1623906), at RC2 HEAD `d32b79928709cf53b671336dabd0caef5a679fc2`, succeeded with `/Applications/Xcode_27.app`, which the existing named fallback already finds. This is source-configuration evidence, not validation of this PR. - Do not copy later RC2 internal-SDK credentials, public-SDK fallbacks, or internal feeds. They address different SDK/runtime pins. Retain existing `TargetsCurrent`, local runner overrides and PowerShell startup/recovery safeguards because Xcode 27 does not prove their underlying issues resolved. The dedicated Copilot-review pipeline retains its own older-branch overrides; it is not the standard net11 build lane. **Validation** - `.dotnet/dotnet build Microsoft.Maui.BuildTasks.slnf -c Release -p:BuildTaskOnlyBuild=true -p:CI=true --verbosity quiet` — **passed**, 0 warnings / 0 errors, using the unchanged pinned SDK `11.0.100-rtm.26480.113` in this worktree. This validates build prerequisites, not Apple 27 app compilation. - `DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer xcodebuild -project src/Core/AppleNative/PlatformInterop/MauiPlatformInterop.xcodeproj -scheme MauiPlatformInterop -configuration Release -sdk iphonesimulator -destination 'generic/platform=iOS Simulator' -derivedDataPath artifacts/native-validation CODE_SIGNING_ALLOWED=NO build` — **passed**, arm64 and x86_64 simulator framework compilation at iOS 15.0, using installed **Xcode 26.6**, not Xcode 27. No simulator/app/test runner was launched. - `plutil -lint src/Core/AppleNative/PlatformInterop/MauiPlatformInterop.xcodeproj/project.pbxproj` and `git diff --check` — **passed**. Python `yaml.safe_load` / XML parsing — **passed** for all changed pipeline and XML configuration files. No pipeline tests were added. - `.dotnet/dotnet msbuild Directory.Build.props -nologo -getProperty:MauiPlatforms,MauiGraphicsPlatforms,IosTargetFrameworkVersionSdkDefault,MacCatalystTargetFrameworkVersionSdkDefault,ValidateXcodeVersion,TargetsCurrent` — **passed**; current Apple TFMs resolve to 27.0 and the blanket validation bypass is absent. Evaluating `eng/Versions.props` confirms unchanged SDK/runtime/Android pins and all four Apple 27 pins. - Downloaded and inspected all four exact Apple workload manifest packages from the public dotnet11 feed — **passed**, confirming the .NET 10 compatibility SDK requirement is 26.5.10322. - `dotnet format Microsoft.Maui.sln --no-restore --exclude Templates/src --exclude-diagnostics CA1822` — attempted but **incomplete**: missing restored references/workloads. Stopped it and removed its unrelated generated formatting edits; no C# source changes are included. - Initial unrestricted build-task attempts were blocked by missing assets / Apple workloads. Repository bootstrap installed the exact pinned SDK; full workload provisioning was stopped in favor of the successful CI build-task-only command above. Remote CI results for commit `e7a941cd121fff58bcd30892bbcf29e18882ac55` (checked October 8, 2026): - [maui-pr 1628491](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1628491) — **completed, failed overall**. Apple compilation, macOS pack and main integration validation passed; the macOS build selected `/Applications/Xcode_27.app`. The only failing main-pipeline task was the Helix monitor: Windows Debug `SkiaSharpSvgToolsTests.Resize.BasicNoScaleReturnsOriginalSize` failed deleting a locked temporary file in `Resize.Dispose()`. This is a **confirmed identical historical cleanup failure predating this PR**, not evidence of an Xcode-adoption regression: September 29 [build 1616449](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1616449), the **net11.0-targeted #38984 merge build** (`refs/pull/38984/merge`, not a direct `refs/heads/net11.0` baseline run), failed the same test in Windows Release with the same `IOException` and `FileSystem.DeleteFile` → `Resize.Dispose()` line-25 stack; only the temporary filename differs. See its actual [Helix console](https://helixr1107v0xdeko0k025g8.blob.core.windows.net/dotnet-maui-refs-pull-38984-merge-c211216b883342c6ae/Microsoft.Maui.Resizetizer.UnitTests.dll/1/console.30a6023e.log?helixlogtype=result) and [test-result XML](https://helixr1107v0xdeko0k025g8.blob.core.windows.net/dotnet-maui-refs-pull-38984-merge-c211216b883342c6ae/Microsoft.Maui.Resizetizer.UnitTests.dll/1/testResults.xml?helixlogtype=result). The fixture is byte-identical between exact base `8d04ca676f` and PR head `e7a941cd12` (blob `a41ebe6e87b3809f952b51f98e594bf5faf2fe25`); Skia/runtime pins and Windows execution pools are unchanged, and the relevant configuration changes are Apple-specific. Together, this supports **no causal link to Xcode adoption**. The latest exact-base [net11.0 build 1628290](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1628290) passed; that does not negate the verified earlier occurrence. No cleanup fix or rerun is included. - [maui-pr-devicetests 1628492](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1628492) — **completed, succeeded**, including Mono/CoreCLR device-app compilation. Cross-checked all nine Helix jobs: 71 terminal work items, zero failing exits and no work items still running; this is a work-item count, not a test-case count. - [maui-pr-uitests 1628493](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1628493) — **completed, failed overall** at 21:42 UTC. UI-app compilation and the complete **iOS CoreCLR UI stage passed**. The five failed/canceled execution legs are MacCatalyst Layout, Navigation and Shell; Windows Shell; and Android SafeAreaEdges. MacCatalyst Shell was canceled after three hours during its retry, so its complete execution coverage remains **unverified**, not passed. - **Baseline-matched UI failures:** MacCatalyst `Issue59172RecoveryTest` timeout matches [net11.0 build 1625634](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1625634). MacCatalyst `ValidateBackgroundColorDoesNotAffectInputTransparent` timeout matches the exact-base [net11.0 build 1628291](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1628291), test run 45168562. MacCatalyst Shell `SearchHandlerQueryIconUpdatesAtRuntime` (0.51% screenshot difference) also matches that build, run 45168556; `SearchHandlerClearPlaceholderIconUpdatesAtRuntime`, seen during the interrupted retry, matches [net11.0 build 1626506](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1626506), run 45112430. Android `SafeAreaNoWhiteSpaceAfterKeyboardDismissAndEdgeToggle` matches the same assertion on [net11.0 build 1627873](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1627873). - **Unmatched UI failures:** MacCatalyst Shell `SearchHandlerResetAllRestoresDefaultIcons` has a 0.52% screenshot mismatch (published in run 45176448); it was not among failed results in the five sampled net11.0 Shell runs. Windows `VerifyShellSearch_TextTransformUppercase` has a 0.70% screenshot mismatch; the corresponding Shell runs pass in all five sampled net11.0 UI builds. Neither is established as unrelated or PR-caused. The Shell cancellation leaves additional coverage incomplete. No screenshot baselines were updated to hide failures. - [PowerShell Script Tests 37821050474](https://github.com/dotnet/maui/actions/runs/37821050474) — **failed**: the unchanged `Review-Tests` contract expects an inline GPT-5.6 model while the unchanged target-branch workflow imports GPT-6.1. Both the assertion and its workflow subject are identical to net11.0; no pipeline-test changes are included in this PR. Xcode 27 is not installed locally; the Apple 27 compilation evidence above is from remote CI. All three PR pipelines have finished, but **full UI validation is not green**, MacCatalyst Shell coverage is incomplete, and **official/internal signing remains pending**. The unmatched failures need further investigation before claiming merge readiness. These results do not justify removing the retained execution-image safeguards. No XCTest/XCUITest or local UI automation was run; global Xcode selection was not changed. The CI watch has been stopped. ### Issues Fixed <!-- Please make sure that there is a bug logged for the issue being fixed. The bug should describe the problem and how to reproduce it. --> No separately filed issue; requested .NET 11 adoption of the already-established RC2 Xcode 27 configuration. <!-- Are you targeting main? All PRs should target the main branch unless otherwise noted. --> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note
Are you waiting for the changes in this PR to be merged?
It would be very helpful if you could test the resulting artifacts from this PR and let us know in a comment if this change resolves your issue. Thank you!
Description of Change
MacOSPooltoAcesSharedwithImageOverride -equals ACES_VM_SharedPool_GoldenGate, retainingos: macOSand caller-supplied pool overrides.skipXcode: truein the official provisioning call to use the image-provided selected Xcode. LeaveskipProvisioning, Windows settings, sharedHostedMacImagedefaults, and other pipeline consumers unchanged.Validation: All 7 tests in
eng/pipelines/ci-official.Tests.ps1pass. Against the old configuration, the 3 change-specific tests fail and the 4 preservation tests pass. YAML and PowerShell syntax checks andgit diff --checkpass.Source evidence: Internal build 3086407 (
20260924.5, source86c2ae315db0128258240d3f60b1db13dc735258) succeeded, including Pack macOS and Pack Windows. Its supplied pool parameters matched the committed defaults semantically. This is evidence for the source configuration, not this PR's CI or validation of release-branch-only stages.Issues Fixed
N/A — official-build configuration update targeting
release/11.0.1xx-rc2.