Skip to content

Publishes prebuilt binaries - #2

Merged
jserv merged 1 commit into
mainfrom
nightly-build
Aug 16, 2026
Merged

Publishes prebuilt binaries#2
jserv merged 1 commit into
mainfrom
nightly-build

Conversation

@jserv

@jserv jserv commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Summary by cubic

Publishes prebuilt binaries for Linux, macOS, and Windows as a rolling GitHub Release tagged latest on every push to main that passes tests. Previously binaries were short‑lived CI artifacts; users now get stable, public tarballs with documented one‑line downloads.

Notes for review/rollout

  • Adds a release job that runs only on push to main, needs check and build, and keeps only the newest latest release.
  • Packages each target as .tar.gz (including Windows via bsdtar) to preserve the executable bit; asset names are commentflow-<target>.tar.gz.
  • Stages and validates the three expected assets before any deletion; then deletes and recreates the latest release and tag so both point at the current commit; uses a concurrency group with cancel-in-progress: false to avoid mid-window cancellation.
  • Uses gh API status checks to distinguish 200/404 from failures and explicitly removes a stale latest tag if present.
  • Updates README with a “Prebuilt Binaries” section (table + macOS quarantine note); adds *.swp to .gitignore.

Written for commit 6460822. Summary will update on new commits.

Review in cubic

@jserv jserv changed the title Nightly build Publishes prebuilt binaries Aug 16, 2026
cubic-dev-ai[bot]

This comment was marked as resolved.

Package each target as a tar.gz and publish all three to a release
tagged "latest" on every push to main that passes the suite on Linux,
macOS, and Windows. tar rather than zip on all three platforms because
bsdtar has shipped with Windows since 10 1803, and because a tarball
carries the executable bit that a bare binary served over HTTPS does
not.

The tag has to move to the commit that produced the binaries, and no gh
invocation repoints an existing tag, so the release is deleted and
recreated. That leaves a window with no release, which two rules narrow.
cancel-in-progress is false, so a second push queues behind this job
instead of killing it mid-window. The assets are counted before anything
is deleted, so a missing artifact fails while the old release still
stands.

A tag can also outlive its release: deleting a release in the web UI
leaves the tag, and so does a run that dies after the delete. Since
"gh release create" ignores --target when the tag already exists, a
leftover ref would publish these binaries under a release pointing at an
older commit. It is removed explicitly rather than trusted to be absent.
@jserv
jserv merged commit c23cdf8 into main Aug 16, 2026
19 checks passed
@jserv
jserv deleted the nightly-build branch August 16, 2026 14:54
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