Skip to content

Build release binaries for Linux, macOS and Windows - #6

Merged
tauanbinato merged 5 commits into
mainfrom
phase-2-distribution
Sep 25, 2026
Merged

tauanbinato merged 5 commits into
mainfrom
phase-2-distribution

Conversation

@tauanbinato

@tauanbinato tauanbinato commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

What and why

Phase 2 of the roadmap: installing JevGate no longer needs a Rust toolchain.

  • build.yml builds x86_64/aarch64 Linux (static musl), aarch64/x86_64 macOS and x86_64 Windows, smoke-tests each native binary, and writes a .sha256 per archive. It runs on tags through release.yml, and on pull requests that change the build or the dependencies.
  • release.yml publishes only when every target built, and attaches the archives, SHA256SUMS and build provenance (gh attestation verify) to the GitHub release. A rerun attaches only missing archives.
  • install.sh installs a checked binary into ~/.local/bin; cargo binstall jevgate finds the same archives. The README's Install section leads with them.
  • CI also tests on macOS and Windows, with rust-cache.
  • Windows fix: repository-relative paths are built with / on every platform. Before, Windows builds named files src\app.ts, so path rules (Next.js routes, Django modules, documentation roles) missed files there, and reports and baselines differed by platform.

How it was checked

  • All checks pass, including Windows tests (previously 16 failures) and all five build targets.
  • The downloaded artifacts verify against their checksums; the archive layout matches install.sh and the binstall metadata; the Linux binaries are static-pie.
  • On Unix, check --rule all --include-tests --dry-run --show-requests produces byte-identical request bodies before and after the path change on four unrelated repositories, so answer caches stay valid.
  • install.sh: shellcheck clean.

Merge this together with the 0.17.0 release: the README's install commands need a release that has binaries.

Each tag builds five targets, attaches the archives with SHA-256 checksums and build provenance to the GitHub release, and publishes to crates.io only when every target built. install.sh installs a checked binary, and cargo binstall finds the archives. CI also tests on macOS and Windows.
Imports and tests that only Unix uses are gated to it. The README installs release binaries first.
Repository-relative paths are built with / on every platform, so path rules (Next.js routes, Django modules, documentation roles) match on Windows and reports, requests and baselines name a file the same way everywhere. Requests on Unix are unchanged.
@tauanbinato
tauanbinato marked this pull request as ready for review September 25, 2026 20:18
@tauanbinato
tauanbinato merged commit 673896a into main Sep 25, 2026
11 checks passed
@tauanbinato
tauanbinato deleted the phase-2-distribution branch September 25, 2026 20:23
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