feat: ship native binaries via GitHub Releases#4
Merged
Conversation
Replace the source-compile-on-install flow (which lost binaries through pnpm's side-effects cache) with the prebuild + prebuild-install pattern. - GitHub Actions matrix builds prebuilt .tar.gz per (platform, arch, libc, ABI) for Node 24.15.0 and 26.1.0 across darwin (x64, arm64), linux (x64, arm64 each with glibc + musl) and win32 (x64) - On a tagged push, the workflow attaches every variant to a GitHub Release via softprops/action-gh-release@v2 - Consumers install with "node-expat": "github:PruvoNet/node-expat#v2.4.2"; prebuild-install reads binary.host/remote_path from package.json and downloads the matching asset at install time, falling back to node-gyp rebuild only if no matching prebuild exists - Drop the custom scripts/install.js (prebuild-install supersedes it) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Add a `gate-release` job that runs after the matrix and only allows the `release` job to proceed if the tag commit is reachable from origin/master. Tags pushed from feature branches still run the build matrix (for verification) but the release is skipped, not failed. - Replace the `container: node:24-alpine` directive on musl jobs with an explicit `docker run` invocation. GitHub Actions JS actions can't run inside Alpine containers on ARM64 runners; running the build inside `docker run` on the host runner sidesteps that limitation and keeps the x64/arm64 musl paths identical. - Drop the obsolete `build-release` branch from the push trigger. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
nan 2.25 still calls SetAlignedPointerInInternalField / GetAlignedPointerFromInternalField with the old (index, value) signature. V8 in Node 26 made the EmbedderDataTypeTag argument mandatory, so the addon failed to compile against Node 26 headers with "too few arguments to function call, expected 3, have 2". nan 2.27 ships the updated shims. Verified locally that both 24.15.0 and 26.1.0 prebuilds now build cleanly. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.
Replace the source-compile-on-install flow (which lost binaries through pnpm's side-effects cache) with the prebuild + prebuild-install pattern.