Skip to content

feat: add Linux x86_64/ARM64 release support#155

Merged
alphaqiu merged 5 commits into
masterfrom
develop
Jun 21, 2026
Merged

feat: add Linux x86_64/ARM64 release support#155
alphaqiu merged 5 commits into
masterfrom
develop

Conversation

@alphaqiu

Copy link
Copy Markdown
Contributor

Summary

Adds Linux x86_64/ARM64 (glibc 2.35+) release support across the release pipeline, distribution channels, and documentation. Source code is already Linux-ready (CI has compiled/tested on ubuntu-latest all along); this closes the distribution gap.

Changes

Release pipeline (.github/workflows/release.yml)

  • Build matrix expands to 4 targets: darwin x2 + x86_64-unknown-linux-gnu + aarch64-unknown-linux-gnu, each on a native runner (ubuntu-22.04 / ubuntu-22.04-arm) — no cross-compilation
  • Release notes add a Linux requirements section (glibc 2.35+, mlock / RLIMIT_MEMLOCK)
  • publish-npm extended for the two new linux subpackages

Distribution (npm/)

  • New subpackages @openkeyring/ok-linux-x64, @openkeyring/ok-linux-arm64
  • Main wrapper os opened to linux; platform dispatch in bin/ok.js; target mapping in stage-binaries.sh

Docs (bilingual README/INSTALL + SECURITY/THREAT_MODEL/SUPPORT/CONTRIBUTING/CHANGELOG/RELEASE)

  • Platform boundary updated to declare Linux (glibc 2.35+) support
  • INSTALL gains a ## Linux Memory Locking section (ulimit / limits.conf / systemd LimitMEMLOCK / setcap)

Cross-repo (already pushed to homebrew-oak-keyring, commit ab1ad37)

  • Formula on_linux block added for Linuxbrew (sha256 are all-zero placeholders until the first Linux release ships)

CI housekeeping

  • actions/checkout bumped v4 → v5 (drops the Node.js 20 deprecation warning)
  • stage_binaries_test.sh extended to cover the two linux targets

Verification

  • develop CI green: fmt / clippy / test (2593+ tests) / stage_binaries_test (4 targets)
  • Release pipeline dry-run via test tag v0.8.0-preview.2-rc.1 (since cleaned up): all 4 build jobs succeeded, including aarch64-unknown-linux-gnu first-ever compile; ubuntu-22.04-arm runner works; OAuth secrets reach ubuntu runners; checksums.txt has 4 entries; GitHub Release created as pre-release with 4 tar.gz
  • NPM environment required-reviewer protection configured (alphaqiu); publish-npm correctly held for approval — no npm package published during the test

Before merge / first release

  • Linux real-machine smoke (maintainer): GNOME/Wayland + X11 + headless + mlock scenarios
  • After the first release ships Linux artifacts: backfill real sha256 in the Homebrew formula on_linux block from checksums.txt

Known issue (unrelated, tracked separately)

tests/e2e/sync_lifecycle_test.rs:671 sync_download_restores_encrypted_private_cloud_metadata is a pre-existing flaky timing-race test (pending vs synced). Same-code rerun passes. Not introduced by this PR; to be fixed independently.

Generated with ZHIPU AI

alphaqiu and others added 3 commits June 21, 2026 22:01
- release.yml: build matrix expands to four targets (darwin x2 plus
  x86_64/aarch64-unknown-linux-gnu) on native runners; release notes
  add a Linux requirements section.
- npm: add @openkeyring/ok-linux-x64 and -arm64 subpackages, open the
  main wrapper os to linux, and wire linux platform dispatch in ok.js
  plus target mapping in stage-binaries.sh.
- docs: declare Linux (glibc 2.35+) support across README and INSTALL
  (bilingual), SECURITY, THREAT_MODEL, SUPPORT, CONTRIBUTING, CHANGELOG,
  and RELEASE; add mlock/RLIMIT_MEMLOCK install guidance to INSTALL.

Co-Authored-By: GLM-5.2 <service@bigmodel.cn>
Extend the stage-binaries fixture (archives, fake tar handler, and
assertions) to the two new linux targets (x86_64/aarch64-unknown-linux-gnu),
matching the npm ok-linux-* subpackages wired in the previous commit.
Without this the new stage_binary calls would fail to find a fixture
archive and exit non-zero.

Co-Authored-By: GLM-5.2 <service@bigmodel.cn>
checkout@v4 runs on Node.js 20, which GitHub now forces to Node 24 and flags with a deprecation warning. v5 runs on Node 24 natively. Drop-in replacement across ci.yml and release.yml (4 occurrences).

Co-Authored-By: GLM-5.2 <service@bigmodel.cn>
Drop-in replacement (Node 24 runtime). Two occurrences in release.yml (build job artifact upload + checksums upload).

Co-Authored-By: GLM-5.2 <service@bigmodel.cn>
Completes the GitHub Actions v5 migration in release.yml: download-artifact (4 uses) and setup-node (1 use). All first-party actions now run on Node 24; no Node 20 deprecation remains.

Co-Authored-By: GLM-5.2 <service@bigmodel.cn>
@alphaqiu alphaqiu merged commit 09091fb into master Jun 21, 2026
1 check passed
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