Skip to content

ci: add build-samples workflow for Phase 3 mobile heads (#511)#519

Merged
adrianhall merged 3 commits into
CommunityToolkit:mainfrom
adrianhall:issues/511
Jul 7, 2026
Merged

ci: add build-samples workflow for Phase 3 mobile heads (#511)#519
adrianhall merged 3 commits into
CommunityToolkit:mainfrom
adrianhall:issues/511

Conversation

@adrianhall

Copy link
Copy Markdown
Collaborator

Summary

Closes #511 (Phase 3 of the samples CI rollout, follow-up to #509 / #510).

Adds CI coverage for the mobile build heads (Android/iOS/Uno) deferred from Phase 1 (#509, merged in #512) and Phase 2 (#510, merged in #514).

Scope

Sample Project(s) TFM(s) Runner / workload
Avalonia TodoApp TodoApp.Avalonia.Android.csproj net10.0-android ubuntu-latest, android workload
Avalonia TodoApp TodoApp.Avalonia.iOS.csproj net10.0-ios macos-latest, ios workload
MAUI TodoApp TodoApp.MAUI.csproj net10.0-android ubuntu-latest, maui-android workload
MAUI TodoApp TodoApp.MAUI.csproj net10.0-ios macos-latest, maui-ios workload
Uno TodoApp TodoApp.Uno.csproj net10.0-android ubuntu-latest, android workload
Uno TodoApp TodoApp.Uno.csproj net10.0-ios / net10.0-maccatalyst macos-latest, ios + maccatalyst workloads
Uno TodoApp TodoApp.Uno.csproj net10.0-windows10.0.26100 windows-latest
Uno TodoApp TodoApp.Uno.csproj net10.0-browserwasm ubuntu-latest, wasm-tools workload
Uno TodoApp TodoApp.Uno.csproj net10.0-desktop ubuntu-latest

Build-only (dotnet restore + dotnet build), consistent with Phases 1 and 2.

Changes

  • Modified build-samples-todoapp-avalonia.yml — renamed the existing job builddesktop; added android (ubuntu-latest) and ios (macos-latest) jobs for the Android/iOS heads. Removed the now-resolved comment deferring these to Add CI workflow to build mobile /samples heads: Android, iOS, Uno (Phase 3 of #509) #511.
  • New build-samples-todoapp-maui.ymlandroid and ios jobs for TodoApp.MAUI.csproj. Since the project has multiple TFMs (net10.0-android;net10.0-ios, plus a Windows TFM conditionally appended on Windows), each job scopes restore/build to a single TargetFramework via -p:TargetFramework (restore) / -f (build), mirroring the pattern already used for the MAUI-Windows head in ci: add build-samples workflow for Phase 2 Windows-only heads (#510) #514. The Windows head remains in build-samples-todoapp-windows.yml, unchanged.
  • New build-samples-todoapp-uno.ymlTodoApp.Uno.csproj is a single Uno.Sdk project with a multi-head TargetFrameworks list (net10.0-android;net10.0-ios;net10.0-maccatalyst;net10.0-windows10.0.26100;net10.0-browserwasm;net10.0-desktop). No single runner can build every head, so each job restores/builds one head at a time via the same TFM-scoping pattern: android (ubuntu), ios-maccatalyst (macos, one job installs both workloads and builds both heads sequentially), windows (windows-latest), browserwasm (ubuntu, wasm-tools), desktop (ubuntu).
  • Modified build-samples.yml — wired todoapp-maui and todoapp-uno into the orchestrator and the all-samples-built gate job; cleaned up the resolved Phase 3 comment.
  • Modified build-samples-todoapp-windows.yml — updated a comment to point at the new build-samples-todoapp-maui.yml instead of Add CI workflow to build mobile /samples heads: Android, iOS, Uno (Phase 3 of #509) #511 (now resolved).

A note on the Uno desktop head and #506

#511 suggested continue-on-error: true (or excluding entirely) for the Uno desktop head, citing a pre-existing NU1605 mentioned in #506. I did not apply that here, deliberately:

All five Uno jobs are left as normal, blocking jobs pending real CI signal from this PR. If any job fails with the NU1605 described in #506, I'll add continue-on-error to just that job and report back to #506 with the concrete reproduction, rather than speculatively excluding a head that may build fine.

Verification

  • actionlint passes on all 5 changed/new workflow files.
  • dotnet restore Datasync.Toolkit.sln && dotnet build Datasync.Toolkit.sln --configuration Release --no-restore succeeds with 0 warnings/errors (confirms no regression to the core library build).
  • Not verified locally: the actual workload installs and builds for the Android, iOS, and Uno heads. This dev environment is macOS with no Android SDK, no full Xcode (Command Line Tools only), and no Windows, so these steps can only be exercised once this PR's CI actually runs — same limitation documented in ci: add build-samples workflow for Phase 2 Windows-only heads (#510) #514 for the Phase 2 Windows heads.

Related

ahall added 2 commits July 7, 2026 13:39
…lkit#511)

Adds CI coverage for the Android/iOS/Uno mobile build heads deferred
from Phase 1 (CommunityToolkit#509/CommunityToolkit#512) and Phase 2 (CommunityToolkit#510/CommunityToolkit#514):

- build-samples-todoapp-avalonia.yml: add android (ubuntu-latest) and
  ios (macos-latest) jobs for TodoApp.Avalonia.Android/.iOS.
- build-samples-todoapp-maui.yml (new): android and ios jobs for
  TodoApp.MAUI, each scoped to a single TargetFramework via
  -p:TargetFramework / -f (the Windows head remains in
  build-samples-todoapp-windows.yml from Phase 2).
- build-samples-todoapp-uno.yml (new): one job per TodoApp.Uno head
  (android, ios+maccatalyst, windows, browserwasm, desktop), each
  restoring/building the single multi-TFM project scoped to one
  TargetFramework at a time.
- build-samples.yml: wire the two new sample workflows into the
  orchestrator and the all-samples-built gate.

The desktop head is intentionally NOT marked continue-on-error here.
CommunityToolkit#506's NU1903 (Tmds.DBus) finding is a NuGet audit warning only and
this repo does not configure NuGet audit to fail builds. CommunityToolkit#506 also
reports a NU1605 hit while investigating that warning, but that has
not been confirmed to reproduce today or to be desktop-specific
(CommunityToolkit.WinUI.Behaviors is referenced unconditionally in
TodoApp.Uno.csproj), so all Uno heads are left as normal, blocking
jobs pending real CI signal.

actionlint passes on all 5 changed/new workflow files. Verified
'dotnet restore/build Datasync.Toolkit.sln --configuration Release'
still succeeds with 0 warnings/errors (no regression to the core
library). The mobile/Uno workload installs and builds themselves
cannot be verified locally (no Android SDK, no full Xcode, no
Windows) and will be confirmed once CI runs on this branch.
…n for TodoApp.Avalonia.iOS

CI (added in CommunityToolkit#511) surfaced a pre-existing mismatch: Info.plist declared
MinimumOSVersion 13.0 while TodoApp.Avalonia.iOS.csproj declares
SupportedOSPlatformVersion 15.0, which the iOS build task hard-fails on
('The MinimumOSVersion value in the Info.plist (13.0) does not match
the SupportedOSPlatformVersion value (15.0) in the project file').
Bump Info.plist's MinimumOSVersion to 15.0 to match the csproj, which
is treated as the source of truth here.

Unrelated to this fix: the same CI run also surfaced a pre-existing
CS8604 nullable-reference warning in the shared LoggingHandler.cs.
It does not fail the build (the run reported 1 warning, 1 error - only
the Info.plist mismatch was the error) and is left untouched to keep
this change scoped to the actual build failure.
CI confirmed the NU1605 (Uno.WinUI 5.5.87 vs 5.4.22, driven by
CommunityToolkit.WinUI.Behaviors' floor vs. the Uno.Sdk pin in
global.json) is not desktop-specific as originally suspected in CommunityToolkit#511 -
it fails restore for every TodoApp.Uno head (confirmed via the
android-head CI log and locally reproduced on net10.0-desktop, no
workload required), since CommunityToolkit.WinUI.Behaviors is
referenced unconditionally in TodoApp.Uno.csproj.

Comment out the todoapp-uno job in build-samples.yml's orchestrator
(and drop it from all-samples-built's needs) rather than trying to
patch around it here. build-samples-todoapp-uno.yml itself is left
fully intact (one job per head, TFM-scoped restore/build) and just
needs to be wired back in once CommunityToolkit#506 lands a fix and
TodoApp.Uno.csproj restores cleanly.

Posted the concrete reproduction details to CommunityToolkit#506 so the fix for that
issue also covers re-enabling this CI job.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add CI workflow to build mobile /samples heads: Android, iOS, Uno (Phase 3 of #509)

1 participant