Skip to content

Attach build artifacts to GitHub releases - #501

Merged
stevedekorte merged 1 commit into
masterfrom
ci/release-artifacts
Aug 15, 2026
Merged

Attach build artifacts to GitHub releases#501
stevedekorte merged 1 commit into
masterfrom
ci/release-artifacts

Conversation

@stevedekorte

Copy link
Copy Markdown
Member

Pushing a version tag now builds the WASM artifacts, runs the test suite, and attaches the results to a GitHub Release.

Until now nothing was downloadable: browser/io_browser.wasm is gitignored and none of the 12 existing tags have artifacts, so the only way to get a working Io was to clone the repo and install wasi-sdk.

What gets attached

file what it is
io_static.wasm The VM as a WASI 0.1 module (wasmtime, wasmer, Node)
io_component.wasm The VM as a WASI 0.2 component (wasm32-wasip2)
io_browser.wasm Reactor module for in-browser embedding
io-browser-<tag>.tar.gz The browser module plus the io.js loader
SHA256SUMS.txt Checksums

Details

  • Triggers on [0-9]* and v[0-9]* tags — all 12 existing tags match the date-based scheme.
  • Runs make check before publishing, so a release cannot ship a failing build.
  • Tags containing alpha, beta, rc, or pre are published as prereleases.
  • Can be run by hand against an existing tag to backfill artifacts onto older releases.
  • Re-running against an existing release updates it instead of failing.
  • Reuses the same wasi-sdk 24 and wasmtime v27 setup as ci.yml, and uses the gh CLI so no third-party actions are added.
  • Release notes come from the commit log, capped at 40 entries with the remainder noted and a compare link. The curated summary stays hand-written on the Release Notes page.

Testing

Built all three targets locally and ran the staging and notes steps verbatim from the YAML. io_static.wasm and io_component.wasm both execute under wasmtime, the tarball contains the expected files, and the checksum file correctly excludes itself. All five publish paths (stable, prerelease, draft, both, and re-run) were exercised against a stubbed gh.

Note

The WASI 0.2 component step is continue-on-error, so a break there degrades the release to a warning rather than blocking the other artifacts. It is the least-exercised target because ci.yml does not build it. Adding make component to CI would be the cleaner fix and is left for a follow-up.

🤖 Generated with Claude Code

Pushing a version tag now builds the WASM artifacts, runs the test
suite, and attaches the results to a GitHub Release: io_static.wasm,
io_component.wasm, io_browser.wasm, a browser kit with the io.js
loader, and a checksum file.

Tags containing alpha, beta, rc, or pre are published as prereleases.
The workflow can also be run by hand against an existing tag to add
artifacts to older releases. Re-running it updates the release rather
than failing.

Also documents the release steps in DEVELOPERS.md and ignores the
dist/ directory the workflow creates.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@stevedekorte
stevedekorte merged commit b9a648b into master Aug 15, 2026
1 check passed
@stevedekorte
stevedekorte deleted the ci/release-artifacts branch August 15, 2026 23:09
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