chore(ci): Install iOS platforms and enable tests again#22636
chore(ci): Install iOS platforms and enable tests again#22636agneszitte wants to merge 6 commits intomasterfrom
Conversation
There was a problem hiding this comment.
Pull request overview
Updates the Azure DevOps CI to restore iOS/macOS test coverage after runner image rollout issues, and adds an Xcode initialization/platform download step to reduce missing simulator/runtime failures on macOS agents.
Changes:
- Re-enable previously disabled macOS template tests and Skia iOS/macOS runtime test stages.
- Add Xcode “first launch” initialization and iOS platform download after
xcode-select. - Re-enable iOS TestFlight stage and temporarily force iOS native tests to run on a specific draft-PR branch.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| build/ci/tests/.azure-devops-tests-templates.yml | Re-enables macOS template test job by removing the hard-disabled condition. |
| build/ci/tests/.azure-devops-tests-skia-stages.yml | Re-enables Skia iOS and macOS runtime test stages by removing hard-disabled conditions. |
| build/ci/templates/ios-build-select-version.yml | Runs Xcode first-launch initialization and downloads iOS platform components after selecting Xcode. |
| build/ci/.azure-devops-stages.yml | Re-enables iOS TestFlight stage and changes iOS native test stage condition (including a temporary branch-specific override). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-22636/wasm-skia-net9/index.html |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-22636/wasm-skia-net9/index.html |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| elif [ -n "$SDK_VERSION" ]; then | ||
| if xcrun simctl list runtimes | grep -q "iOS $SDK_VERSION"; then | ||
| echo "Required iOS simulator runtime already installed." | ||
| exit 0 |
There was a problem hiding this comment.
grep is used with a regex pattern that includes $SDK_VERSION (which contains .). That makes the match less precise because . is a regex wildcard. Use fixed-string matching (e.g. grep -Fq) or escape the version string so the runtime check doesn’t produce false positives/negatives.
| if [ -n "$SDK_BUILD_VERSION" ] && xcrun simctl list runtimes | grep -q "iOS.*$SDK_BUILD_VERSION"; then | ||
| echo "Required iOS simulator runtime now installed." | ||
| elif [ -n "$SDK_VERSION" ] && xcrun simctl list runtimes | grep -q "iOS $SDK_VERSION"; then | ||
| echo "Required iOS simulator runtime now installed." | ||
| elif [ -z "$SDK_BUILD_VERSION" ] && [ -z "$SDK_VERSION" ] && xcrun simctl list runtimes | grep -q "iOS"; then |
There was a problem hiding this comment.
Same regex issue in the post-download verification: $SDK_VERSION contains dots and is treated as a regex. Switch to fixed-string matching (or escape) to ensure the runtime presence check is accurate.
|
🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-22636/wasm-skia-net9/index.html |
|
|
|
🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-22636/wasm-skia-net9/index.html |
|
|
05b5775 to
dc1b663
Compare
|
@agneszitte Rebased on latest master, we shall see if all tests get green |
|
🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-22636/wasm-skia-net9/index.html |
|
|
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.
Comments suppressed due to low confidence (1)
build/ci/.azure-devops-stages.yml:152
- The
ios_testsstage no longer has an effectivecondition, so it will run by default on PRs instead of being scoped byDetermineScope.SetScope.RequireNativeIos. If this is only for measuring CI time, consider adding a temporary override flag (variable/parameter) while keeping the original condition as the default to avoid permanently forcing iOS native UI tests on unrelated PRs.
- stage: ios_tests
displayName: Tests - iOS Native
# condition: and(succeededOrFailed(), or(ne(variables['Build.Reason'], 'PullRequest'), eq(stageDependencies.Setup.outputs['DetermineScope.SetScope.RequireNativeIos'], 'true'))) # Temporary: force-enable on this draft PR for CI timing.
dependsOn:
- Setup
jobs:
- template: tests/.azure-devops-tests-ios-native.yml
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| elif [ -n "$SDK_VERSION" ]; then | ||
| if xcrun simctl list runtimes | grep -q "iOS $SDK_VERSION"; then | ||
| echo "Required iOS simulator runtime already installed." | ||
| exit 0 | ||
| fi |
There was a problem hiding this comment.
grep -q "iOS $SDK_VERSION" treats SDK_VERSION as a regex, so dots in versions (e.g. 17.5) will match any character. This can cause false positives/negatives and may trigger unnecessary xcodebuild -downloadPlatform runs. Use fixed-string matching (e.g. grep -Fq) or escape the version string before grepping.
| - bash: | | ||
| echo 'xCode Root to ${{parameters.xCodeRoot}}' | ||
| echo '##vso[task.setvariable variable=MD_APPLE_SDK_ROOT;]'${{parameters.xCodeRoot}} | ||
| sudo xcode-select --switch ${{parameters.xCodeRoot}}/Contents/Developer | ||
| sudo xcodebuild -runFirstLaunch | ||
| # Verify expected iOS simulator runtime; download only if missing. | ||
| SDK_BUILD_VERSION=$(xcrun --sdk iphonesimulator --show-sdk-build-version 2>/dev/null || true) | ||
| SDK_VERSION=$(xcrun --sdk iphonesimulator --show-sdk-version 2>/dev/null || true) |
There was a problem hiding this comment.
This script doesn’t enable set -e (or otherwise check return codes), so a failure in xcode-select/xcodebuild -runFirstLaunch could be ignored and the step may still exit 0 later, masking the real issue. Consider adding set -e near the top (or explicitly || exit 1 on the critical commands) so CI fails fast when Xcode selection/initialization fails.
|
🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-22636/wasm-skia-net9/index.html |
6244772 to
7790148
Compare
|
🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-22636/wasm-skia-net9/index.html |
This installs iOS platform components after selecting Xcode to avoid missing simulator runtimes on macOS runners.
It also re-enables the iOS/macOS tests previously disabled in #22608 and temporarily forces the iOS native stage to run for this draft PR so we can measure CI time impact while runner images are still deployed/propagated
(Ref: actions/runner-images#13607 (comment) / https://github.com/actions/runner-images/blob/main/README.md#available-images)
Note: No related issue (Internal maintenance / Approved by Team member: @agneszitte).