Ship a binary per platform, and tell people to curl it - #83
Open
sotashimozono wants to merge 3 commits into
Open
sotashimozono wants to merge 3 commits into
sotashimozono wants to merge 3 commits into
Conversation
The extension is on the store and public, so people arrive without a Rust toolchain or a C compiler. What the release carried was the extension zip, so the only way to the daemon was `cargo install`, which needs both. Four targets now: windows-msvc, both darwins, linux-gnu. The Linux one builds on the older runner on purpose -- a binary linked against a newer glibc will not start on an older one, and the people this is for are on login nodes somebody else administers. musl would remove that floor and is not here yet, because `ring` wants a C toolchain targeting musl and an untested build inside a release job fails at the worst moment. Unsigned, and that is a decision rather than a corner cut. Gatekeeper and SmartScreen act on a flag the *downloading application* attaches -- `com.apple.quarantine`, Mark-of-the-Web -- and `curl` and `scp` attach neither. A command-line tool installed the way command-line tools are installed meets no warning at all. Signing is a few hundred a year to remove one from the single route nothing here recommends, so the README leads with `curl` and says why, and the extension's no-daemon screen prints a `curl` line for the platform reading it rather than linking to a page somebody would download from. `cargo binstall ssh-browser` works off the same assets, spelled out in `[package.metadata.binstall]` rather than left to the defaults: it tries several name shapes and a near-miss falls back to building from source, which is the compiler this exists to avoid, arrived at silently. The e2e check on that screen asserted `cargo install`. It now asserts a download and, separately, that no bare URL appears -- a link is the one thing that would put the quarantine flag back. Signed-off-by: Souta <shimozono-sota631@g.ecc.u-tokyo.ac.jp>
The dispatched run built all four targets and then failed on Windows at `shasum: command not found`. Git Bash there ships `sha256sum` and not `shasum`; the three Unix runners have both, so the wrong one of the pair looked fine everywhere it was tried. This is what running the job against an existing tag was for. Discovered in a release it would have been a tag with three binaries and no explanation. Signed-off-by: Souta <shimozono-sota631@g.ecc.u-tokyo.ac.jp>
The README says .../releases/latest/download/ssh-browser-x86_64-pc-windows-msvc.exe and the workflow uploaded `ssh-browser-0.5.1-x86_64-pc-windows-msvc.exe`. That URL is the one that never goes stale and it cannot interpolate a version, so it 404s. Found by running the command the README gives instead of reading it. The name loses the version; a pinned download still carries it in the path, `releases/download/v0.5.1/...`, which is where a version belongs. binstall`s `pkg-url` follows. Signed-off-by: Souta <shimozono-sota631@g.ecc.u-tokyo.ac.jp>
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The extension is on the store and public, so people arrive without a Rust toolchain or a C compiler. What the release carried was the extension zip, so the only way to the daemon was
cargo install, which needs both.Four targets now — windows-msvc, both darwins, linux-gnu. The Linux one builds on the older runner on purpose: a binary linked against a newer glibc will not start on an older one, and the people this is for are on login nodes somebody else administers. musl would remove that floor and is not here yet, because
ringwants a C toolchain targeting musl and an untested build inside a release job fails at the worst moment.Unsigned, on purpose
Gatekeeper and SmartScreen act on a flag the downloading application attaches —
com.apple.quarantine, Mark-of-the-Web — andcurlandscpattach neither. Measured on the binary this produced:So the README leads with
curland says why, and the extension's no-daemon screen prints acurlline for the platform reading it rather than linking to a page somebody would download from. Signing is a few hundred a year to remove a warning from the one route nothing here recommends.cargo binstall ssh-browserworks off the same assets, spelled out in[package.metadata.binstall]rather than left to the defaults: binstall tries several name shapes and a near-miss falls back to building from source — the compiler this exists to avoid, arrived at silently.Two things the dispatch runs found
The workflow was run against the existing
v0.5.1tag three times before being wired into a release, which is what turned both of these into test failures instead of broken releases.shasum: command not foundon Windows. Git Bash there hassha256sumand notshasum; the three Unix runners have both, so the wrong one of the pair looked fine everywhere it was tried.A 404 on the README's own URL.
releases/latest/download/<name>is the link that never goes stale and it cannot interpolate a version, so an asset namedssh-browser-0.5.1-x86_64-...is unreachable through it. Found by running the command the README gives rather than reading it. The name lost the version; a pinned download still carries it in the path.Verified end to end
230 tests, 65 e2e checks against a real host. The e2e check on the no-daemon screen asserted
cargo install; it now asserts a download, and separately that no bare URL appears — a link is the one thing that would put the quarantine flag back.