Skip to content

ci(release): drop 32-bit dashmate pack targets unsupported by Node 24#3709

Merged
shumkov merged 1 commit into
v3.1-devfrom
ci/fix-dashmate-pack-node24-targets
May 20, 2026
Merged

ci(release): drop 32-bit dashmate pack targets unsupported by Node 24#3709
shumkov merged 1 commit into
v3.1-devfrom
ci/fix-dashmate-pack-node24-targets

Conversation

@shumkov
Copy link
Copy Markdown
Collaborator

@shumkov shumkov commented May 20, 2026

Summary

  • Restrict oclif pack targets in scripts/pack_dashmate.sh to architectures Node 24 still publishes binaries for.
  • Drops 32-bit Linux ARM (linux-armv7l) and 32-bit Windows (win-x86) from the dashmate release matrix.

Background

The Release Dashmate packages matrix (deb, tarballs, win) has been failing on every release run since v3.1.0-dev.1 (2026-02-18). Logs from today's v3.1.0-dev.3 run (26180129457):

oclif: building target dashmate-v3.1.0-dev.3-39f2e29c9-linux-arm.tar.gz
oclif: downloading node-v24.14.1-linux-armv7l
oclif: retrying node download (attempt 1)
oclif: retrying node download (attempt 2)
oclif: retrying node download (attempt 3)
HTTPError: Response code 404 (Not Found)

Node 24 dropped 32-bit binaries. SHASUMS256.txt for v24.14.1 publishes only:

  • linux: x64, arm64, ppc64le, s390x
  • win: x64, arm64
  • darwin: x64, arm64

When oclif pack bundles a Node runtime for an embedded target, it downloads the matching nodejs.org tarball. linux-armv7l and win-x86 404 → all three jobs die at "Create package".

Why it surfaced now

  • Composite Setup Node.JS default bumped 20 → 24 in commit ec4665bb2a on 2026-01-27, before v3.1.0-dev.1.
  • Same failure on v3.1.0-dev.1 (22144450177) — same three jobs ✗, macos ✓.
  • Masked on v3.1.0-dev.2 because release-npm itself failed and needs: release-npm blocked the matrix from running.
  • With release-npm fixed in ci(release): drop redundant second Setup Node.JS in release-npm #3702, the latent dashmate-pack failure is now visible.

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.deb
  • dashmate-...-x86.exe

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 — 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

  • CI green on this PR
  • After merge, the next release run (v3.1.0-dev.4 or whatever follows) shows Release Dashmate packages (deb|tarballs|win|macos) all ✓.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • Updated build infrastructure to support 64-bit platforms exclusively. 32-bit build variants for ARM and Windows are no longer produced.

Review Change Stack

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>
@shumkov shumkov requested a review from QuantumExplorer as a code owner May 20, 2026 19:02
@github-actions github-actions Bot added this to the v3.1.0 milestone May 20, 2026
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 20, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 2986bdda-bf9e-4699-897a-f892e53242cf

📥 Commits

Reviewing files that changed from the base of the PR and between 63b2108 and f1cdaa3.

📒 Files selected for processing (1)
  • scripts/pack_dashmate.sh

📝 Walkthrough

Walkthrough

pack_dashmate.sh refactors platform target selection from a tarballs-only if conditional into a case "$COMMAND" statement. The script now explicitly sets distinct oclif pack flags for tarballs, deb, and win targets, dropping unsupported 32-bit architectures (linux-armv7l, win32-x86) and consolidating to 64-bit platforms.

Changes

Platform Target Selection

Layer / File(s) Summary
Platform target selection via case statement
scripts/pack_dashmate.sh
FLAGS is initialized and then assigned per-command in a case statement, with tarballs and deb targeting linux-arm64,linux-x64 and win targeting win32-x64, removing 32-bit targets.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Suggested reviewers

  • QuantumExplorer

Poem

A rabbit hops through build flags bright,
Case statements now organize the night,
32-bit targets take their bow,
64-bit futures show us how! 🐰✨

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ci/fix-dashmate-pack-node24-targets

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@shumkov shumkov merged commit 92e9d71 into v3.1-dev May 20, 2026
15 of 16 checks passed
@shumkov shumkov deleted the ci/fix-dashmate-pack-node24-targets branch May 20, 2026 19:03
Copy link
Copy Markdown
Collaborator

@thepastaclaw thepastaclaw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

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.

2 participants