ci(desktop): gate the Rust shell on macOS + Windows too - #61
Conversation
Turn the single ubuntu-22.04 rust job into a fail-fast:false matrix over ubuntu-22.04, macos-14 and windows-latest so a Windows/macOS-only compile break in the Rust shell or the vendored OpenSSL/libssh2 build surfaces on the PR instead of at release-tag time. - Gate the apt install step with runner.os == 'Linux'. - Add a Windows-only ilammy/setup-nasm step (Strawberry Perl is preinstalled) for the vendored ssh2 OpenSSL/libssh2 build. - Run the Stub frontend dist step under shell: bash so the mkdir -p / redirect works via Git Bash on windows-latest. macOS/Linux behavior is unchanged; the fmt/test and bun bridge steps are already cross-platform. The full tauri build stays in desktop-release.yml.
Security review — round 1Verdict: APPROVE CI-only change to Checked against the Security lens:
Functional gate: all three matrix legs are green on this PR — No blocking Security issues. |
Code Quality review — round 1Verdict: APPROVE Reviewed the full diff against the piece intent. This genuinely delivers a cross-platform compile+test gate without relocating the problem or regressing macOS/Linux.
CI: all three No blocking Code Quality issues. |
Functionality & Tests review — round 1Verdict: APPROVE Judged against the piece intent: turn the single Cross-OS delivery — verified green on THIS PRAll three matrix legs of the path-filtered
This is the acceptance test for the piece and it is satisfied. Spec compliance (
|
Author response — round 2All three round-1 reviews (Security, Code Quality, Functionality & Tests) returned APPROVE with no blocking findings, and every CI check is green — including all three Rust matrix legs on this PR: Because there are no blocking comments, no code changes are made in round 2 — the workflow is left exactly as reviewed and passing, to avoid invalidating the green matrix. Intentionally unchanged
Nothing else was raised. The piece delivers the cross-OS compile+test gate (macOS + Windows added to Linux) with the Linux path byte-for-byte preserved (apt step now carries an always-true |
Security review — round 2Verdict: APPROVE Re-review of the unchanged diff at head Confirmed against the Security lens on the current head:
Functional gate: all three matrix legs green on this PR — No blocking Security issues. |
Code Quality review — round 2Verdict: APPROVE Re-reviewed at PR head (
CI: all three No blocking Code Quality issues. |
Functionality & Tests review — round 2Verdict: APPROVE Re-reviewed against the piece intent (turn the single Cross-OS delivery — green on THIS PR
This is the acceptance test for the piece and it is satisfied. Entire suite (35 checks) is green; no FAILED or pending checks. Spec compliance (
|
What
Turns the single
rustjob in.github/workflows/desktop-ci.yml(previouslyubuntu-22.04only) into a matrix overubuntu-22.04,macos-14, andwindows-latestwithstrategy.fail-fast: falseandruns-on: ${{ matrix.os }}.Why
The desktop Rust shell (incl. the vendored OpenSSL/libssh2 build for
ssh2) was only compiled on Linux in CI, so a Windows/macOS-only compile break only surfaced at release-tag time indesktop-release.yml. This adds a fast per-PR compile+test gate on all three desktop OSes.Changes
Install Linux dependenciesapt step withif: runner.os == 'Linux'.Install Windows build dependencies (NASM)step (if: runner.os == 'Windows') usingilammy/setup-nasm@v1— the vendored OpenSSL/libssh2 build needs an assembler on Windows; Strawberry Perl is already preinstalled onwindows-latest. macOS needs no extra deps.shell: bashto theStub frontend diststep so itsmkdir -p/ redirect run under Git Bash onwindows-latestinstead of PowerShell.Preserving macOS/Linux behavior
The Linux job is byte-for-byte the same steps as before (the apt step now just carries an always-true
runner.os == 'Linux'guard).cargo fmt --check,cargo test, and the bun lint/typecheck/test bridge steps are all cross-platform and unchanged.swatinem/rust-cacheworkspaces stayapps/desktop/src-tauri. The full signed tauri build remains indesktop-release.yml— this stays a fast compile+test gate.Test coverage
The workflow going green on all three OSes on this PR is the test (desktop-ci.yml is in its own path filter, so the new macOS/Windows jobs run here).
Auto-merge pipeline: squash-merges on 3/3 lens approvals + green CI.