ci: Run tvOS on PRs only for Apple changes - #24950
MartinZikmund wants to merge 2 commits into
Conversation
|
Claude finished @MartinZikmund's task in 2m 52s —— View job Review complete ✅
Verdict: Ship (1 non-blocking observation) Summary This is a small, well-scoped CI change: it adds a I traced the new regex ( One non-blocking design observation posted inline: the new scope is purely path/keyword-based, so it doesn't match edits to the shared No source/test code, DependencyProperty, XAML, or event-pattern surfaces touched by this PR, so the rest of the |
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
The matcher misses Apple resource tasks used by tvOS builds.
Review effort: Balanced
Findings: 1
Open (1)
What changed in this PR
Limits tvOS CI on pull requests to Apple-specific changes while preserving post-merge and fallback coverage.
Changes:
- Adds a tvOS test-scope variable and path matcher.
- Conditionally runs the tvOS stage on PRs.
- Review found one scope-matching gap.
| File | Description |
|---|---|
build/ci/tests/.azure-devops-tests-skia-stages.yml |
Gates the tvOS stage by scope. |
build/ci/scripts/determine-test-scope.ps1 |
Detects Apple-related changes. |
💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012psuk5dxG4cNcryRVL2VWS
f28b860 to
a80e15a
Compare
There was a problem hiding this comment.
Warning
Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a copilot-code-review.yml file specifying one with the runs-on attribute. See the docs for more details.
Copilot review overview
Review effort: Lite
Findings: 1
|
Claude finished @MartinZikmund's task in 2m 3s —— View job Review complete ✅
Verdict: Ship (1 confirmed non-blocking finding, 1 prior non-blocking finding still outstanding) What I checked The diff is unchanged since the last review pass (same two files, same SHAs). I re-verified the change end-to-end rather than re-stating prior output:
New finding posted inline Confirmed Copilot's review comment on Cross-cutting, still open from the prior pass The self-validation gap raised previously (the No C#/XAML/DependencyProperty/event-pattern surfaces are touched by this PR, so the rest of the |
|
🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-24950/wasm-skia-net9/index.html |
Match iOSResourceConverter-style names, and run tvOS when the stage condition or the scope script itself changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CKYPsdeNEWd1CARAojRx7H
|
Claude finished @MartinZikmund's task in 2m 48s —— View job Review complete ✅
Verdict: Ship (1 new non-blocking observation; all prior findings resolved) What's new since the last review pass Commit
The New finding posted inline One narrower, non-blocking residual gap on No source/test code, DependencyProperty, XAML, or event-pattern surfaces are touched by this PR, so the rest of the |
| $patterns = @{ | ||
| TemplateTestsRequired = [regex]'(?i)(?:^build/|\.csproj$|\.props$|\.targets$|^src/uno\.sdk/|^src/sourcegenerators/uno\.ui\.tasks/|^src/.*devserver.*|^src/.*remotecontrol.*)' | ||
| ScreenshotsRequired = [regex]'(?i)^src/(uno\.ui|addins).*\.cs$' | ||
| TvOSTestsRequired = [regex]'(?i)(?:^|[/._-])(?:tvos|ios|uikit|appleuikit|apple)(?:[/._-]|$)|(?:^|[/._-])(?-i:iOS|tvOS|UIKit|Apple)(?-i:[A-Z])|^build/ci/tests/\.azure-devops-tests-skia-stages\.yml$|^build/ci/scripts/determine-test-scope\.ps1$' |
| $patterns = @{ | ||
| TemplateTestsRequired = [regex]'(?i)(?:^build/|\.csproj$|\.props$|\.targets$|^src/uno\.sdk/|^src/sourcegenerators/uno\.ui\.tasks/|^src/.*devserver.*|^src/.*remotecontrol.*)' | ||
| ScreenshotsRequired = [regex]'(?i)^src/(uno\.ui|addins).*\.cs$' | ||
| TvOSTestsRequired = [regex]'(?i)(?:^|[/._-])(?:tvos|ios|uikit|appleuikit|apple)(?:[/._-]|$)|(?:^|[/._-])(?-i:iOS|tvOS|UIKit|Apple)(?-i:[A-Z])|^build/ci/tests/\.azure-devops-tests-skia-stages\.yml$|^build/ci/scripts/determine-test-scope\.ps1$' |
There was a problem hiding this comment.
Nice fix — this resolves both gaps flagged in the prior review round (PascalCase iOSResourceConverter.cs/iOSResourcesWriter.cs now match via the case-sensitive (?-i:iOS|tvOS|UIKit|Apple)(?-i:[A-Z]) branch, and the self-reference gap is closed for the two files this PR actually touches).
One residual, non-blocking gap: the explicit self-reference only lists determine-test-scope.ps1 and .azure-devops-tests-skia-stages.yml. The condition on the tvOS stage also depends on the DetermineScope/SetScope job/task names being correct in build/ci/.azure-devops-stages.yml (where that job is defined — see build/ci/.azure-devops-stages.yml:29,43). A future rename of that job/task wouldn't be caught, because changes under build/ are covered by TemplateTestsRequired, not TvOSTestsRequired, so the tvOS lane itself would stay skipped on such a PR. Not worth blocking on — just flagging since this is the same class of self-validation issue already addressed for the other two files.
|
🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-24950/wasm-skia-net9/index.html |



GitHub Issue: closes #24949
PR Type:
🏗️ Build or CI related changes
What changed? 🚀
Tests - tvOS Skianow runs on a PR only whendetermine-test-scope.ps1finds Apple-specific changes. A newTvOSTestsRequiredscope matches any path segment or file-name parttvos,ios,uikit,appleuikitorapple:*.iOS.cs,*.UIKit.cs,*.Apple.cs,Uno.UI.Runtime.Skia.AppleUIKit/, the tvOS/iOS CI templates and test scripts. Words likescenariosorratiosdon't match.Post-merge builds (master, release, feature) still run tvOS every time. If the scope script can't fetch the target branch, it enables every scope, tvOS included.
Why: iOS and tvOS together queue 10 shards on the small Mac pool. In clean PR builds since #24638, iOS shards waited a median 29 min for an agent and tvOS 33 min, longer than either actually ran. iOS Skia still runs on every PR and covers the shared Skia layer.
This PR touches no Apple paths, so its own CI run should show tvOS skipped and the iOS shards waiting less.
PR Checklist ✅
Screenshots Compare Test Runresults.🤖 Generated with Claude Code
https://claude.ai/code/session_012psuk5dxG4cNcryRVL2VWS