Skip to content

ci: Publish from servicing/* branches and bump main to 8.0-dev - #3173

Merged
agneszitte merged 4 commits into
mainfrom
dev/agzi/bump-8.0-servicing-ci
Sep 3, 2026
Merged

ci: Publish from servicing/* branches and bump main to 8.0-dev#3173
agneszitte merged 4 commits into
mainfrom
dev/agzi/bump-8.0-servicing-ci

Conversation

@agneszitte

Copy link
Copy Markdown
Member

GitHub Issue (If applicable): #

PR Type

  • Build or CI related changes

What is the current behavior?

main is the only branch that publishes an Extensions dev channel (7.4.0-dev.*). Once main retargets to Uno 7.0, those packages stop being consumable by apps still on Uno 6.x — which is what clients validate fixes against before we backport them to a service release.

servicing/* is not wired into this pipeline, so cutting such a branch today produces a branch that builds nothing.

What is the new behavior?

Four commits that must land together.

1. ci: Build and publish from servicing/* branches

Change Why
servicing/* in trigger.branches and pr.branches (build/ci/.azure-pipelines.yml) the branch builds at all, and PRs into it run
servicing/ in the Publish_Dev stage condition the dev publish stage runs for it
servicing/ in the dev-feed push step (build/ci/templates/nuget-publish-dev.yml) packages also reach the internal dev feed, matching main
^refs/heads/servicing/.*$ in publicReleaseRefSpec (version.json) NBGV emits 7.4.0-dev.30 rather than 7.4.0-dev.30.g8548c462cd

2. ci: Document the servicing/* branch pattern at the publish gates — the two generic comment blocks the other repos carry.

3. ci: Validate conventional commits on servicing/* branchesValidate for conventional commits is a required status check on main, but the workflow only listens for PRs to main and release/*. This is a prerequisite for giving servicing/* the same branch protection: a required check that never reports leaves the PR stuck at "Expected — waiting for status".

4. chore!: Bump version to 8.0-dev for the Uno 7.0 line

Why the bump is required

main is at 7.4.0-dev.29. A servicing/7.4 branch sits one commit above the same base, so both would compute 7.4.0-dev.30 from different code. The push runs with allowPackageConflicts: true, so the second is skipped silently on a green pipeline.

Verified with nbgv get-version after these commits:

Branch NuGetPackageVersion
servicing/7.4 7.4.0-dev.30 — clean, no hash suffix, confirming the refspec entry works
main (this PR) 8.0.0-dev.1 — height resets at the version change

No 8.0 line exists on nuget.org today, so the space is free.

Why a major

Unlike Uno.Themes and uno.toolkit.ui — both already on net10, where the bump rested on binary compatibility alone — every trigger applies here. Read from the published 7.4.0-dev.29 package:

net9.0, net9.0-android35.0, net9.0-browserwasm1.0, net9.0-desktop1.0,
net9.0-ios18.0, net9.0-maccatalyst18.0, net9.0-windows10.0.19041
  • Every shipped asset is net9, which 7.0 drops. Removing a target framework is a breaking change by .NET convention regardless of API surface (Microsoft).
  • Mac Catalyst is removed in 7.0, and net9.0-maccatalyst18.0 is a shipped asset.
  • Recompiled against 7.0, the -android / -ios assets become Skia binaries, unusable by 6.x consumers.

7.0 work still ahead on this repo (not in this PR)

  • TFM movenet9.0 is hardcoded in src/tfms-non-ui.props, src/tfms-ui-maui.props and siblings (22 references).
  • Mac Catalyst removal — 6 references, including the shipped Uno.Extensions.Maui.WinUI.csproj platform condition and src/Directory.Build.props.
  • Microsoft.Maui.Controls.Compatibility — referenced by two shipped projects, Uno.Extensions.Maui.UI and Uno.Extensions.Maui.WinUI.Markup. That package is no longer built or shipped as of .NET 11 Preview 6, which is what unoplatform/uno#24360 addressed on the SDK side. Someone should confirm MAUI embedding behaves on net11 without the compatibility renderers.
  • 1 × Uno.UI.Toolkit reference to remap.

No removed XAML prefixes, no SkiaSharp usage, no references to packages 7.0 deletes.

PR Checklist

  • Tested with current supported SDKs — no product code changed
  • Docs — n/a
  • Tests — n/a, pipeline and version metadata only
  • Contains NO breaking changes to this repo's code — the ! marks the version-line break for consumers of the 7.0 line
  • Commits follow Conventional Commits

Other information

servicing/7.4 is deliberately not pushed yet. It is cut at this PR's merge-base and stays local until this merges — pushing first opens the 7.4.0-dev.30 collision above. Its CI files are already byte-identical to this branch, so the two will not conflict on a later sync.

Sequence: merge this, confirm main publishes 8.0.0-dev.1, push servicing/7.4, confirm 7.4.0-dev.30, then apply the servicing/* branch protection mirroring main.

Same pattern already merged in unoplatform/uno#24361, uno.csharpmarkup#904, uno.app-mcp#143, Uno.Themes#1713 and uno.toolkit.ui#1634.

A servicing/* branch continues a previous version line after main has moved on
to a newer one, so it needs to build and publish dev packages the same way main
does.

Adds servicing/* to the build and PR triggers, the Publish_Dev stage condition,
the dev-feed push step and the NBGV publicReleaseRefSpec. Every change is an
additional branch pattern inside an existing or(), so main's own behaviour is
unchanged.
Matches the comments the other repos carry, so the pattern is discoverable from
the files that decide whether a branch publishes.
'Validate for conventional commits' is a required status check on main, so it
must also report for PRs into a servicing branch -- otherwise applying main's
branch protection to servicing/* leaves those PRs stuck on a check that never
runs.
Frees the 7.4-dev version space for servicing/7.4, which keeps publishing
packages for the previous Uno line. Without a bump both branches would compute
the same NBGV height and publish the same version from different code.

Taken as a major because the 7.0 line drops net9.0 -- every published asset is
currently net9 -- and removes the Mac Catalyst target framework, both breaking
changes by .NET convention regardless of API surface.
@agneszitte
agneszitte merged commit 691ff1d into main Sep 3, 2026
10 of 22 checks passed
@agneszitte
agneszitte deleted the dev/agzi/bump-8.0-servicing-ci branch September 3, 2026 21:53
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.

1 participant