Skip to content

feat(release): publish Linux ARM64 Broker Packs - #982

Open
FaintGhost wants to merge 1 commit into
TraderAlice:devfrom
FaintGhost:linux-arm64-broker-packs
Open

feat(release): publish Linux ARM64 Broker Packs#982
FaintGhost wants to merge 1 commit into
TraderAlice:devfrom
FaintGhost:linux-arm64-broker-packs

Conversation

@FaintGhost

Copy link
Copy Markdown

What changed

  • add { os: ubuntu-latest, arch: arm64 } to the build-broker-packs release matrix
  • run the arm64 install/build/upgrade-smoke sequence inside a linux/arm64 node:22-trixie container via QEMU (GitHub-hosted runners are x64-only); the workspace is bind-mounted so dist/broker-packs artifacts land on the runner for upload
  • keep the existing native steps unchanged for all other matrix entries
  • make broker-pack-upgrade-smoke treat a missing previous-release catalog for the current platform as a first-release skip (new platform), while keeping every other HTTP error fatal
  • update docs/broker-packs.md release matrix and the release-workflow.spec.ts matrix assertion

Root cause

The broker-pack release matrix covers macOS arm64/x64, Windows x64, and Linux x64, but no Linux arm64. On arm64 hosts (Apple Silicon Docker, ARM VPSes), the installer requests OpenAlice-Broker-Packs-<version>-linux-arm64.json from download.openalice.ai and fails with Broker-pack catalog request failed: HTTP 404, blocking UTA broker setup entirely (e.g. Longbridge). Verified against the CDN: the arm64 catalog 404s while the x64 catalog returns 200.

Why QEMU

pnpm broker-packs:build runs pnpm deploy per engine, which resolves platform-specific native SDKs (longbridge includes a GNU glibc 2.39 prebuild; the requirementsFor libc gate already applies to all Linux). An x64 runner cannot produce a correct arm64 dependency tree, so the arm64 matrix entry builds inside an emulated container. Verified the same command natively on linux-arm64: all five engine archives build and pass broker-packs:verify.

Verification

  • npx tsc --noEmit — clean
  • pnpm vitest run scripts/release-workflow.spec.ts scripts/ci-workflow.spec.ts scripts/desktop-package-workflow.spec.ts — 7 passed
  • workflow YAML parsed and matrix/steps confirmed structurally
  • native linux-arm64 run of pnpm broker-packs:build produces and verifies ccxt, alpaca, ibkr, leverup, longbridge archives
  • broker-pack-upgrade-smoke 404-skip path exercised against a tag with no arm64 catalog

Residual risk

  • The arm64 job is the first to build under QEMU; first release will be slower than native jobs (no timeout configured, runs in parallel, fail-fast: false)
  • The first arm64 release skips the previous-release upgrade smoke by design (nothing to upgrade from); subsequent releases exercise it
  • Longbridge arm64 carries the same glibc >= 2.39 requirement as linux-x64

The broker-pack release matrix covers macOS arm64/x64, Windows x64, and
Linux x64, but no Linux arm64. Users on arm64 hosts (Apple Silicon Docker,
ARM VPSes) hit "Broker-pack catalog request failed: HTTP 404" when the
installer requests OpenAlice-Broker-Packs-<version>-linux-arm64.json.

GitHub-hosted runners are x64-only, so the arm64 matrix entry runs the
install/build/upgrade-smoke sequence inside a linux/arm64 node:22-trixie
container via QEMU; the workspace is bind-mounted so artifacts land on the
runner for upload. pnpm deploys the platform-specific native SDKs (e.g.
longbridge's glibc prebuild) for arm64 inside that container.

broker-pack-upgrade-smoke now treats a missing previous-release catalog
for the current platform as a first-release skip (new platform) instead of
failing on the 404, while keeping every other HTTP error fatal.

Verified locally: release-workflow/ci-workflow/desktop-package-workflow
specs pass, tsc --noEmit clean, and a native linux-arm64 run of
pnpm broker-packs:build produces and verifies all five engine archives.
@vercel

vercel Bot commented Aug 4, 2026

Copy link
Copy Markdown

@FaintGhost is attempting to deploy a commit to the luokerenx4's Team Team on Vercel.

A member of the Team first needs to authorize it.

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