ci(release): drop 32-bit dashmate pack targets unsupported by Node 24#3709
Conversation
Node 24 stopped publishing 32-bit Linux ARM (armv7l) and 32-bit Windows (win-x86) binaries: https://nodejs.org/dist/v24.14.1/SHASUMS256.txt -> linux: x64, arm64, ppc64le, s390x -> win: x64, arm64 When `oclif pack` tries to bundle a Node runtime for an embedded target, it downloads the matching nodejs.org tarball. Since the composite `Setup Node.JS` action defaulted to Node 24 (commit ec4665b, before v3.1.0-dev.1), every `Release Dashmate packages` matrix run since v3.1.0-dev.1 has 404'd: oclif: downloading node-v24.14.1-linux-armv7l HTTPError: Response code 404 (Not Found) This was masked on v3.1.0-dev.2 because the upstream `release-npm` job failed first and `needs: release-npm` blocked the matrix. With release-npm fixed in #3702, the latent failure resurfaced on v3.1.0-dev.3. Restrict oclif targets to architectures Node 24 still ships: - tarballs: linux-arm -> linux-arm64 - deb: explicit linux-x64,linux-arm64 (drop armv7l) - win: explicit win32-x64 (drop win32-x86) Trade-off: v3.0.1 shipped armv7l tarball, armel deb, and x86 win .exe artifacts. Modern hardware on those platforms is essentially extinct (Raspberry Pi 4+ is 64-bit, current Windows is x64/arm64), and Node 24+ cannot package against them anyway. The alternative — pinning a separate older Node for the pack step — splits Node versions across release stages and adds significant complexity for niche platforms. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthrough
ChangesPlatform Target Selection
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Suggested reviewers
Poem
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
thepastaclaw
left a comment
There was a problem hiding this comment.
Code Review
Tightly scoped CI fix that aligns the explicit oclif pack target lists with Node 24's available runtime binaries. No blocking issues. One minor doc-consistency nitpick worth surfacing; the broader release-matrix coverage suggestion is acknowledged as out of scope by the original agent and dropped.
Note: Inline posting failed (command failed (1): gh api /repos/dashpay/platform/pulls/3709/reviews --method POST --input -
STDOUT:
{"message":"Unprocessable Entity","errors":["Variable $threads of type [DraftPullRequestReviewThread] was provided invalid value for 0.commitId (Field is not defined on DraftPullRequestReviewThread)), so I posted the same verified findings as a top-level review body.
Reviewed commit: f1cdaa3
💬 1 nitpick(s)
1 additional finding(s)
nitpick: Tarballs comment is inconsistent with the deb/win comments
scripts/pack_dashmate.sh (line 26)
The deb and win bullets describe oclif's upstream default target list, then state what is being dropped. The tarballs bullet instead describes what we pass. For consistency and to make the rationale obvious to future readers, document oclif's default tarball targets (which include linux-arm / armv7l) and note that the explicit --targets=linux-arm64,linux-x64 excludes that 32-bit target.
# Node 24+ does not publish 32-bit binaries (linux-armv7l, win-x86), so we
# must explicitly drop those targets from oclif's default lists; otherwise
# `oclif pack` 404s while downloading the embedded Node runtime.
# - tarballs default targets: linux-x64, linux-arm (armv7l), linux-arm64 — drop arm.
# - deb default targets: linux-x64, linux-arm (armv7l), linux-arm64 — drop arm.
# - win default targets: win32-x64, win32-x86 — drop x86.
🤖 Prompt for all review comments with AI agents
These findings are from an automated code review. Verify each finding against the current code and only fix it if needed.
- [NITPICK] In `scripts/pack_dashmate.sh`:26-29: Tarballs comment is inconsistent with the deb/win comments
The `deb` and `win` bullets describe oclif's upstream default target list, then state what is being dropped. The `tarballs` bullet instead describes what we pass. For consistency and to make the rationale obvious to future readers, document oclif's default tarball targets (which include `linux-arm` / armv7l) and note that the explicit `--targets=linux-arm64,linux-x64` excludes that 32-bit target.
Summary
oclif packtargets inscripts/pack_dashmate.shto architectures Node 24 still publishes binaries for.linux-armv7l) and 32-bit Windows (win-x86) from the dashmate release matrix.Background
The
Release Dashmate packagesmatrix (deb,tarballs,win) has been failing on every release run sincev3.1.0-dev.1(2026-02-18). Logs from today'sv3.1.0-dev.3run (26180129457):Node 24 dropped 32-bit binaries.
SHASUMS256.txtfor v24.14.1 publishes only:x64,arm64,ppc64le,s390xx64,arm64x64,arm64When
oclif packbundles a Node runtime for an embedded target, it downloads the matching nodejs.org tarball.linux-armv7landwin-x86404 → all three jobs die at "Create package".Why it surfaced now
Setup Node.JSdefault bumped 20 → 24 in commitec4665bb2aon 2026-01-27, beforev3.1.0-dev.1.v3.1.0-dev.1(22144450177) — same three jobs ✗,macos✓.v3.1.0-dev.2because release-npm itself failed andneeds: release-npmblocked the matrix from running.Trade-off
v3.0.1(last successful Node-20-era release) shipped three artifacts this PR removes:dashmate-...-linux-arm.tar.gz(32-bit ARM)dashmate_..._armel.debdashmate-...-x86.exeModern hardware on those platforms is essentially extinct (Raspberry Pi 4+ is 64-bit, current Windows is x64/arm64), and Node 24+ cannot package against them anyway. The alternative — embedding a separate older Node for the pack step — splits Node versions across release stages and conflicts with the trusted-publishers Node 24+ requirement at the publish step. Dropping the dead platforms is simpler.
Test plan
v3.1.0-dev.4or whatever follows) showsRelease Dashmate packages (deb|tarballs|win|macos)all ✓.🤖 Generated with Claude Code
Summary by CodeRabbit