Skip to content

Build both RIDs in CI with the publish flags that actually ship - #56

Merged
trsdn merged 3 commits into
masterfrom
fix/22-ci-arm64-matrix
Aug 28, 2026
Merged

trsdn merged 3 commits into
masterfrom
fix/22-ci-arm64-matrix

Conversation

@trsdn

@trsdn trsdn commented Aug 28, 2026

Copy link
Copy Markdown
Owner

Fixes #22

CI built and published win-x64 only, while release.yml builds a matrix of win-x64 and win-arm64. An ARM64-specific break, a native dependency, a RID-specific package resolution failure, a trimming difference, was only discoverable on a v* tag push, that is during a release, when it is most expensive to fix.

build.yml now runs the same two-RID matrix. fail-fast is off so an ARM64 break does not mask the x64 result.

The second half of the issue matters more than the matrix

CI published without -p:IncludeNativeLibrariesForSelfExtract=true, which both release.yml and installer/build.ps1 pass. That flag changes what actually ends up inside the single file, so CI was signing off on an artifact that is not the one that ships. The publish step is now flag-for-flag identical to the release path, which is what makes the matrix worth anything.

The publish output was also being thrown away. It is now uploaded so PR builds are inspectable. Retention is capped at 7 days because a self-contained trimmed exe is ~185 MB per RID and this runs on every PR.

Verification

The interesting question is whether ARM64 actually builds, since nothing has ever compiled it outside a release. I ran the exact publish command locally:

dotnet publish md2loop/md2loop.csproj -c Release -r win-arm64 --self-contained true `
  -p:PublishSingleFile=true -p:PublishTrimmed=true -p:IncludeNativeLibrariesForSelfExtract=true

It succeeds. The only diagnostics are the IL2059 XamlTypeInfo and IL2104 RtfPipe trim warnings, both of which are pre-existing and appear identically on x64, so the new matrix leg will be green rather than immediately red.

Workflow file also parsed to confirm the matrix and step structure.

Note for merging

PR #41 (test project) and PR #43 (MSIX packaging) both add steps to build.yml as well. Whichever lands second will need a small rebase; the changes are in different steps so it should be mechanical.

trsdn and others added 3 commits August 28, 2026 22:34
CI built and published win-x64 only, while release.yml builds a matrix of
win-x64 and win-arm64. An ARM64-specific break was therefore only discoverable
on a v* tag push, during a release, when it is most expensive to fix.

CI also published without IncludeNativeLibrariesForSelfExtract, which both
release.yml and installer/build.ps1 pass. That flag changes what ends up inside
the single file, so CI was not validating the artifact that ships. The publish
step is now flag-for-flag identical to the release path.

The publish output was previously discarded; it is now uploaded so PR builds are
inspectable, with a short retention because the self-contained exe is large.
fail-fast is off so an ARM64 break does not mask the x64 result.

Fixes #22

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: b721ad5f-9add-4f55-b9c8-7e6d7b0fb3e7
# Conflicts:
#	.github/workflows/build.yml
# Conflicts:
#	.github/workflows/build.yml
@trsdn
trsdn merged commit 621c0cd into master Aug 28, 2026
2 checks passed
@trsdn
trsdn deleted the fix/22-ci-arm64-matrix branch August 28, 2026 21:14
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.

CI builds x64 only while releases also build ARM64

1 participant