ci: real download links on PRs via nightly.link, one artifact per platform#58
Merged
Conversation
…tform The previous comment linked the Actions run page, which is not a download link: the reader still has to find the right row, and GitHub's per-artifact URL (/actions/runs/<id>/artifacts/<id>) only resolves with browser session cookies — a token gets a 404 — so it does nothing for a logged-out visitor. GitHub exposes no anonymous artifact URL at all. nightly.link is a third-party redirector that resolves an artifact to an anonymous, no-login download. Verified against the existing artifact: an unauthenticated curl returns 200 and a valid 13.8MB zip. Public repos need no app install (installing it only avoids sharing a global API rate limit, worth doing separately if these links get traffic). Also splits the single bundle into one artifact per platform, so each link is one binary. A Windows user was downloading 33MB of Linux and macOS binaries to get a 6MB .exe. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013JJnPtEtP97to9Rv2QMoer
Contributor
Try this PR without building itCI cross-compiled review binaries for commit Download from the run page — the
On macOS and Linux, unzip then Downloading requires being signed in to GitHub, and artifacts expire 14 days after the run. Posted automatically. Updated on each push to this PR. |
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.
Follow-up to #57. That PR linked the Actions run page, which isn't a download link — you still have to find the right row, and it's useless to anyone not signed in.
Why the obvious fix doesn't work
GitHub does have a per-artifact URL,
/actions/runs/<run>/artifacts/<id>. It only works with browser session cookies. With a token it 307s to a/suites/...URL that then 404s:So a plain link is one-click only for signed-in humans, and nothing at all for a logged-out visitor. GitHub exposes no anonymous artifact URL.
Change
1. Links via nightly.link — a third-party redirector that resolves an artifact to an anonymous download. Verified against the existing artifact with no credentials of any kind:
Public repos need no app install. Installing it is still worth doing separately — it stops our downloads sharing nightly.link's global API rate limit — but nothing here depends on it.
2. One artifact per platform instead of one bundle, so each link is a single binary. A Windows user was pulling 33 MB of Linux and macOS binaries to get a 6 MB
.exe. The build job becomes a 5-way matrix, which also parallelizes it.The comment now looks like:
liftoff-export-darwin-arm64.zipliftoff-export-windows-amd64.zipTrade-off worth stating plainly
This puts a third-party service in the path of "download and test this PR." nightly.link is open source and widely used, it only ever redirects to GitHub's own storage, and it can't serve anything from a private repo without an explicit app install. But it is someone else's infrastructure, and if it's down the links are down — the run-page link is kept in the footer as a signed-in fallback. If that trade isn't worth it, the alternative is publishing per-PR prerelease tags, which gives genuinely first-party anonymous URLs at the cost of release-list clutter and cleanup on close.
Verification
Note this PR's own CI comment will still be the old run-page style, since the comment workflow runs from
main. The new format starts on the next PR after this merges.🤖 Generated with Claude Code
https://claude.ai/code/session_013JJnPtEtP97to9Rv2QMoer