ci(release): build all platforms (macOS arm64/x86_64 + static musl) #4

Merged
buildagent merged 1 commit from ci/release-all-platforms into master 2026-06-04 15:53:45 +02:00
Member

Expands the release-build matrix from 3 → 6 targets, covering all 3 OSes × 2 arches.

Target Triple Status
linux-x86_64 (glibc) x86_64-unknown-linux-gnu required
linux-x86_64-musl (static) x86_64-unknown-linux-musl new, best-effort
linux-aarch64 aarch64-unknown-linux-gnu required (cross)
windows-x86_64 x86_64-pc-windows-gnu required (cross)
macOS Intel x86_64-apple-darwin new, best-effort
macOS Apple Silicon aarch64-apple-darwin new, best-effort

Design

  • The build job is now matrix-driven on runner/container: Linux/Windows stay in the ci-base container; macOS entries run on a bare macos runner.
  • New targets are continue-on-error (matrix.optional): if no macOS runner is registered or a cross toolchain is missing, that artifact is skipped and the release still publishes everything that built. The three required entries can never regress the current pipeline.
  • musl links and compiles tree-sitter's C via musl-gcc → a fully static, glibc-free binary (Alpine/distroless). macOS packaging falls back to shasum/BSD tar.
  • Refreshes the generated per-platform README (five→six languages, adds Ruby) and the release-notes download table.

Notes / requirements

  • macOS jobs need a registered Forgejo runner labelled macos (with Xcode CLT). Without one they're skipped, not fatal.
  • windows-aarch64 omitted: needs aarch64-pc-windows-msvc (a Windows+MSVC runner; can't cross from the Linux container).
  • One thing I couldn't verify without runners: macOS entries set container: "" (empty = host execution). Standard for Actions, but if this Forgejo runner rejects an empty container:, the macOS entries would need splitting into a separate job — easy follow-up.

YAML validated; CI-only change (no version bump), and it won't trigger the release workflow (that's tag-gated).

🤖 Generated with Claude Code

Expands the release-build matrix from 3 → 6 targets, covering all 3 OSes × 2 arches. | Target | Triple | Status | |---|---|---| | linux-x86_64 (glibc) | `x86_64-unknown-linux-gnu` | required | | linux-x86_64-musl (static) | `x86_64-unknown-linux-musl` | **new**, best-effort | | linux-aarch64 | `aarch64-unknown-linux-gnu` | required (cross) | | windows-x86_64 | `x86_64-pc-windows-gnu` | required (cross) | | macOS Intel | `x86_64-apple-darwin` | **new**, best-effort | | macOS Apple Silicon | `aarch64-apple-darwin` | **new**, best-effort | ### Design - The build job is now **matrix-driven** on `runner`/`container`: Linux/Windows stay in the `ci-base` container; macOS entries run on a bare `macos` runner. - New targets are `continue-on-error` (`matrix.optional`): if no macOS runner is registered or a cross toolchain is missing, that artifact is skipped and the release still publishes everything that built. **The three required entries can never regress the current pipeline.** - musl links **and** compiles tree-sitter's C via `musl-gcc` → a fully static, glibc-free binary (Alpine/distroless). macOS packaging falls back to `shasum`/BSD `tar`. - Refreshes the generated per-platform README (five→six languages, adds Ruby) and the release-notes download table. ### Notes / requirements - macOS jobs need a **registered Forgejo runner labelled `macos`** (with Xcode CLT). Without one they're skipped, not fatal. - `windows-aarch64` omitted: needs `aarch64-pc-windows-msvc` (a Windows+MSVC runner; can't cross from the Linux container). - One thing I couldn't verify without runners: macOS entries set `container: ""` (empty = host execution). Standard for Actions, but if this Forgejo runner rejects an empty `container:`, the macOS entries would need splitting into a separate job — easy follow-up. YAML validated; CI-only change (no version bump), and it won't trigger the release workflow (that's tag-gated). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
ci(release): build all platforms (add macOS arm64/x86_64 + static musl)
Some checks failed
CI / cargo fmt (pull_request) Failing after 16s
CI / cargo clippy (pull_request) Has been skipped
CI / cargo test (pull_request) Has been skipped
CI / cargo fmt (push) Failing after 16s
CI / cargo clippy (push) Has been skipped
CI / cargo test (push) Has been skipped
0ec2b5d0f6
Expands the release matrix from 3 to 6 targets covering all 3 OSes x 2
arches:
  - linux-x86_64        (glibc, required)
  - linux-x86_64-musl   (static, best-effort)   NEW
  - linux-aarch64       (cross, required)
  - windows-x86_64      (cross, required)
  - macos-x86_64        (needs macOS runner, best-effort)  NEW
  - macos-aarch64       (needs macOS runner, best-effort)  NEW

The job is now matrix-driven on runner/container so macOS entries run on
a bare macOS runner while Linux/Windows stay in the ci-base container.
New targets are continue-on-error: if no macOS runner is registered or a
cross toolchain is missing, that artifact is skipped and the release
still publishes every target that built — the three required entries can
never regress. musl links + compiles tree-sitter's C via musl-gcc for a
fully static, glibc-free binary. macOS packaging falls back to
shasum/BSD tar.

Also refreshes the generated per-platform README (five->six languages,
adds Ruby) and the release-notes download table (musl + both macOS).

windows-aarch64 omitted: needs aarch64-pc-windows-msvc (a Windows+MSVC
runner; can't cross from the Linux container).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
buildagent deleted branch ci/release-all-platforms 2026-06-04 15:53:45 +02:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
h-dv/code-index!4
No description provided.