Fix release testing and status workflows - #4686
Conversation
Make pipeline status execution portable across Windows and Unix while surfacing Azure CLI failures instead of treating them as missing runs. Test exact prepublication stable packages, use the supported Android API 26 floor, require approval for machine setup changes, and include the Windows MAUI path throughout release testing. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae9429ab-3288-4306-bef2-334a88751a86
📦 Try the packages from this PRWarning Do not run these scripts without first reviewing the code in this PR. Step 1 — Download the packages bash / macOS / Linux: curl -fsSL https://raw.githubusercontent.com/mono/SkiaSharp/main/scripts/get-skiasharp-pr.sh | bash -s -- 4686PowerShell / Windows: iex "& { $(irm https://raw.githubusercontent.com/mono/SkiaSharp/main/scripts/get-skiasharp-pr.ps1) } 4686"Step 2 — Add the local NuGet source dotnet nuget add source ~/.skiasharp/hives/pr-4686/packages --name skiasharp-pr-4686More options
Or download manually from Azure Pipelines — look for the Remove the source when you're done: dotnet nuget remove source skiasharp-pr-4686 |
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae9429ab-3288-4306-bef2-334a88751a86
📊 SkiaSharp benchmarks — PR #4686⭐ this PR (full source build) vs 🌙 nightly · Linux · Windows · macOS
Highlights⏱️ Time — 🔴 33 slower · 🟢 14 faster
Full per-OS benchmark deltasLinux⏱️ Time (vs 🌙 nightly
Windows⏱️ Time (vs 🌙 nightly
macOS⏱️ Time (vs 🌙 nightly
|
Validate publish resources before queueing, make Azure approval boundaries explicit, handle release-notes concurrency and optional milestones, and preserve native Azure CLI output bytes across Windows encodings. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae9429ab-3288-4306-bef2-334a88751a86
Dispatch the release-notes workflow once from main and treat GitHub's acceptance as completion, leaving concurrency and supersession to the workflow. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae9429ab-3288-4306-bef2-334a88751a86
Keep source-run verification and confirmation in the release workflow, then queue pipeline 25298 from the verified managed build number with focused format and duplicate guards. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae9429ab-3288-4306-bef2-334a88751a86
Use one deterministic ASCII renderer for status output while preserving platform-aware decoding of Azure CLI bytes. Cover cp1252 subprocess output through the ASCII-safe console path and remove the obsolete Unicode fallback behavior. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae9429ab-3288-4306-bef2-334a88751a86
Use the exact ASCII-only status vocabulary, reduce website notes refresh to a single dispatch, and move publish source and duplicate checks into the pre-confirmation workflow. Replace the queue helper with a compact build-number-only script and focused tests. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae9429ab-3288-4306-bef2-334a88751a86
Keep source and duplicate-run verification in the publish workflow, then use a sub-100-line helper for one Azure queue POST. Remove the duplicate confirmation and decoding framework and focus tests on request construction and CLI outcomes. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae9429ab-3288-4306-bef2-334a88751a86
Inline the concise publish queue procedure, remove the obsolete Azure reference, and restore milestone auditing and exact optional closure for preview, RC, and stable releases. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae9429ab-3288-4306-bef2-334a88751a86
Restore the original two-phase every-release milestone rationale and audit procedure, while retaining exact paginated lookup and non-fatal missing-milestone handling. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae9429ab-3288-4306-bef2-334a88751a86
Inline ASCII rendering in the status emitter, remove dead empty-output branches, and collapse one-use publish queue classification and URL return layers without changing behavior. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae9429ab-3288-4306-bef2-334a88751a86
Restore presentation Unicode in release-status guidance while keeping literal pipeline output examples and the executable ASCII-only. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae9429ab-3288-4306-bef2-334a88751a86
Describe only the non-ASCII escaping the renderer performs and avoid redundantly escaping an already validated hexadecimal SHA. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae9429ab-3288-4306-bef2-334a88751a86
Derive the exact SkiaSharp and HarfBuzzSharp package pair from the selected managed build, guard publish queueing, and verify each public version independently. Keep Appium guidance focused on actionable setup and align coupled release documentation. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae9429ab-3288-4306-bef2-334a88751a86
📦 Artifact size reportPackages from this PR (build Total Packages
+38 package(s) unchanged (< 50.0 KB). Per-file changes
|
| File | Size |
|---|---|
runtimes/win-arm64/native/libGLESv2.pdb |
64.5 MB → 64.4 MB (🟢 −144.0 KB) |
runtimes/win-x86/native/libGLESv2.pdb |
67.3 MB → 67.2 MB (🟢 −112.0 KB) |
runtimes/win-x64/native/libGLESv2.pdb |
66.6 MB → 66.5 MB (🟢 −96.0 KB) |
Informational only — this never blocks the PR. Native binaries are labelled by os/arch.
Description
Fix the release skills so prepublication testing uses the exact package pair produced by the selected managed build, Windows status tooling preserves native CLI output correctly, and final publication cannot select, duplicate, or approve the wrong build.
az/az.cmd), decode UTF-8 or the platform encoding without replacement corruption, render executable pipeline-status output through one ASCII-only path with[OK],[WARN],[FAIL],[RUNNING], and[WAITING]markers plus deterministic backslash escaping for non-ASCII dynamic text, and propagate CLI failures. The skill Markdown retains presentation Unicode for user-facing guidance.+, apply the same complete suffix to the HarfBuzzSharp base version, and verify both exact.versionvalues on the internal test (EAP) feed. Preview/RC public versions equal the exact packages; stable public versions use the two base versions.MauiWindowsTestspath in commands, execution order, monitoring, criteria, and final reports; keep the official Appium Windows driver and consent-gatedinstall-wadsetup actionable and focused.10789, terminal success, the exact release branch/commit, and expected release label, then check for non-completed pipeline25298runs before asking for queue confirmation.queue-publish.pywrapper that accepts only the verified build-number string, rejects numeric or malformed values, infers stable versus preview/RC, performs one Azure POST withresources.pipelines.SkiaSharp.versionset to that string, and prints the run ID/URL.Push Stable/Push Preview, and requirecompleted/succeededbefore separately polling the exact SkiaSharp and HarfBuzzSharp public versions. Poll exhaustion fails explicitly.Sync - Release Notes & API Diffsonce frommain, reporting it started, and considering the step complete.audit-milestones.ps1, then close only the exact release milestone when it exists; absent milestones succeed and open issues are surfaced before closure.Upstream metadata checked on 2026-08-05: Appium 3.6.0, UiAutomator2 8.2.2, Windows driver 6.1.0, and the Appium system requirements. Azure queue behavior was checked against the official Run Pipeline REST API and live 4.151.1 source/publish runs.
Related issues
None.
Required skia PR
None.
Areas affected
binding/)externals/skia/src/c,include/c)Changes
None — release tooling, tests, and documentation only; no public API or shipped runtime behavior change.
Testing
.cmdlauncher execution, checked subprocess errors, empty output, and a real byte-level cp1252 subprocess (Café) decoded without U+FFFD and rendered asCaf\xe9through the single ASCII console path.subprocess.run, usestext=True, and issues oneaz devops invokePOST with--query id -o tsv.py_compileand confirmed the two executable Python scripts are ASCII source.release-status,release-testing, andrelease-publishwithskill-creator/scripts/quick_validate.pyunder Python UTF-8 mode.git diff --check.Checklist
Changesabove lists all public API and behavioral changes (or "None.")mono/skiaPR linked above and bindings regenerated — N/A, no native change