Repository navigation
[ci] Add MAUI full R2R android-arm Helix test - #12020
Conversation
Build the MAUI template with CoreCLR full ReadyToRun for android-arm, disable MAUI partial R2R with _MauiPublishReadyToRunPartial=false, and run the APK on the windows.11.amd64.android-armel.open Helix queue. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Run MAUI CoreCLR R2R coverage across android-arm64 and android-arm, with default MAUI R2R settings and _MauiPublishReadyToRunPartial=false full-R2R settings. Rename the helper template and avoid the PowerShell read-only Error variable. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Avoid Java keyword package segments in the default R2R matrix cases by using baseline package suffixes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Invoke helixpublish.proj with the prepared repo-local dotnet msbuild instead of eng/common/msbuild.ps1, which requires tools.dotnet in global.json and fails in this pipeline. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add Microsoft.DotNet.Helix.Sdk to global.json so dotnet msbuild can resolve eng/common/helixpublish.proj when submitting MAUI R2R APK work items. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copy Android SDK platform-tools into each MAUI R2R Helix payload and run the payload-local adb.exe instead of assuming adb is on the Helix queue PATH. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Adds CI validation for MAUI template apps built with CoreCLR + ReadyToRun and executed on Android Helix queues, including a βfull R2Rβ configuration that asserts no partial-R2R inputs remain.
Changes:
- Pin
Microsoft.DotNet.Helix.Sdkinglobal.jsonsoeng/common/helixpublish.projcan restore/build reliably. - Introduce a new pipeline template to (1) clone the MAUI template into per-case matrix projects, (2) build APKs with R2R settings, (3) package an adb-driven Helix work item, and (4) submit/runs it via
helixpublish.proj. - Invoke the new template from both internal and public AzDO pipelines in the MAUI integration job.
Show a summary per file
| File | Description |
|---|---|
| global.json | Adds a pinned MSBuild SDK version for Microsoft.DotNet.Helix.Sdk. |
| build-tools/automation/yaml-templates/run-maui-r2r-helix-matrix.yaml | New template to configure MAUI R2R matrix projects, build APKs, package Helix payload, and submit to Helix queues. |
| build-tools/automation/azure-pipelines.yaml | Wires the new MAUI R2R Helix matrix template into the MAUI integration job (internal pipeline). |
| build-tools/automation/azure-pipelines-public.yaml | Wires the new MAUI R2R Helix matrix template into the MAUI integration job (public pipeline). |
Copilot's findings
- Files reviewed: 4/4 changed files
- Comments generated: 3
Use a repo-owned Helix project so each MAUI R2R scenario sets a descriptive Azure Pipelines test run and work item name. Download Helix result files into the MAUI logs artifact and upload scenario, device, package, and full logcat diagnostics from each work item. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Remove DownloadFilesFromResults=**/* from the MAUI R2R Helix work item. The Helix SDK treats it as part of a Windows path while downloading result files, causing a successful work item to fail the submission step. 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>
|
This is now blocked by dotnet/runtime#130564 - it needs to be merged and flow to our repo via the VMR |
jonathanpeppers
left a comment
There was a problem hiding this comment.
Do we need helix here?
In VS, I created the latest x86 emulator it would allow:
(VS could be buggy, there could be newer ones)
This emulator should be able to run an android-arm app:
> adb shell getprop | grep armeabi-v7a
[ro.product.cpu.abilist]: [x86,armeabi-v7a,armeabi]
[ro.product.cpu.abilist32]: [x86,armeabi-v7a,armeabi]
Which should work on our existing emulator test lanes that run on x64.
I will revisit this once dotnet/runtime#130564 flows to our repo |
|
@copilot resolve the merge conflicts in this pull request |
β¦clr-testing # Conflicts: # global.json Co-authored-by: simonrozsival <374616+simonrozsival@users.noreply.github.com>
Resolved the merge conflict in |
Cache the process handle before waiting so Windows PowerShell populates ExitCode when output streams are redirected. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
/review |
|
β Android PR Reviewer completed successfully!
|
There was a problem hiding this comment.
Reviewed the MAUI CoreCLR ReadyToRun Helix matrix and its pipeline integration. I left one inline error-handling finding: a failed app launch bypasses logcat collection, which makes the new runtime test unnecessarily difficult to diagnose. The latest Azure DevOps build is still in progress; no failures were present when checked.
Generated by Android PR Reviewer for #12020 Β· gpt56 Β· 141.3 AIC Β· β 17.1 AIC Β· β 25.7K
Comment /review to run again
| "%ADB%" shell pm path $packageName > "%UPLOAD_DIR%\pm-path-${{ testCase.name }}.log" | ||
| "%ADB%" shell dumpsys package $packageName > "%UPLOAD_DIR%\dumpsys-package-${{ testCase.name }}.log" | ||
| "%ADB%" shell logcat -c | ||
| "%ADB%" shell monkey -p $packageName -c android.intent.category.LAUNCHER 1 || exit /b 1 |
There was a problem hiding this comment.
monkey result exits before the logcat capture and uninstall below, so launch failures lose the diagnostics needed to distinguish an activity-resolution problem from an immediate app/runtime failure. Route this branch through the same failure cleanup used for pidof so the work item always uploads logcat before returning failure.
Summary
Closes #12026
Validation