Skip to content

Add macOS/Windows deploy-tool signing, normalize reproducibility checks, clean up deploy matrix#78

Merged
arrdalan merged 16 commits intomainfrom
fix/deploy-reproducibility
May 7, 2026
Merged

Add macOS/Windows deploy-tool signing, normalize reproducibility checks, clean up deploy matrix#78
arrdalan merged 16 commits intomainfrom
fix/deploy-reproducibility

Conversation

@jkaczman
Copy link
Copy Markdown
Collaborator

@jkaczman jkaczman commented Apr 27, 2026

This PR tightens the deploy release pipeline with a focus on reproducibility & release verification.

On the macOS side, it adds helper scripts for release signing & app verification, updates pinned toolchain inputs (Tauri CLI, clang, Xcode, SDK) to reflect the current versions of our macOS build environment, and normalizes how we compare signed release artifacts against unsigned reproducible build outputs. Signed macOS apps can't be compared naively byte-for-byte.. Apple signing mutates release-only metadata in Mach-O files, so the comparison now uses normalized Mach-O content while preserving strict manifest-to-file integrity checks. Apple signature & notarization verification remain separate required checks.

On the Windows side, it adds the same signed-release split for Authenticode artifacts. The new Windows signing helper post-processes the unsigned output with Azure Artifact Signing + trusted timestamping. The new Windows verifier then checks the distributed signed installer against a local unsigned rebuild by stripping only the exact PE/AuthentiCode-managed regions (checksum, security directory, certificate table, and bounded alignment padding). Everything outside that signing envelope still has to match byte-for-byte. Authenticode verification, timestamp verification, publisher identity, and the pinned signer certificate thumbprint are separate required checks that verify those managed regions contain valid Windows signing metadata rather than arbitrary ignored bytes.

On the more general side for the release pipeline, it fixes deterministic (Linux) AppImage builds by escaping whitespace in mksquashfs sort paths, stops producing RPM artifacts (as it's unnecessary for now), and drops unsupported deploy targets from the default matrix (x86_64-apple-darwin, aarch64-pc-windows-msvc) since we currently have no way to test those (however they can be built & reproduced if we do have a way to test in the future).

Finally, this rewrites the release verification README to document the split between regular byte-for-byte reproducible artifacts, Linux deploy artifacts, and signed macOS/Windows deploy releases. It now includes the fast-path commands, the signed checksum/source-revision trust model, platform-specific verification guarantees, and the limits of what these checks actually prove.

@jkaczman jkaczman requested a review from arrdalan April 27, 2026 02:10
@jkaczman jkaczman force-pushed the fix/deploy-reproducibility branch from b7c5564 to 6c6dcfa Compare April 27, 2026 13:39
@jkaczman jkaczman changed the title Add macOS signing, normalize reproducibility checks, clean up deploy matrix Add macOS/Windows deploy-tool signing, normalize reproducibility checks, clean up deploy matrix May 3, 2026
@jkaczman jkaczman marked this pull request as ready for review May 3, 2026 23:15
Copy link
Copy Markdown
Collaborator

@arrdalan arrdalan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good.

@arrdalan arrdalan merged commit a0a0897 into main May 7, 2026
8 checks passed
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.

2 participants