fix(ci): use cargo-zigbuild to lower Linux glibc requirement to 2.28 (#556)

Replace `cargo build` with `cargo zigbuild` for Linux release binaries,
targeting `x86_64-unknown-linux-gnu.2.28` and `aarch64-unknown-linux-gnu.2.28`
so prebuilt binaries run on distributions with glibc ≥ 2.28 (RHEL 8+, CentOS 8+,
TencentOS 3, Debian 10+, Ubuntu 20.04+) instead of requiring glibc ≥ 2.39.

Fixes #555.

Signed-off-by: staryxchen <staryxchen@tencent.com>
This commit is contained in:
Stary
2026-05-04 15:17:58 +08:00
committed by GitHub
parent d06eaed008
commit 41843e63b0
+23 -2
View File
@@ -58,10 +58,12 @@ jobs:
# --- deepseek (cli) ---
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
target_zig: x86_64-unknown-linux-gnu.2.28
binary: deepseek
artifact_name: deepseek-linux-x64
- os: ubuntu-24.04-arm
target: aarch64-unknown-linux-gnu
target_zig: aarch64-unknown-linux-gnu.2.28
binary: deepseek
artifact_name: deepseek-linux-arm64
- os: macos-latest
@@ -79,10 +81,12 @@ jobs:
# --- deepseek-tui (TUI) ---
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
target_zig: x86_64-unknown-linux-gnu.2.28
binary: deepseek-tui
artifact_name: deepseek-tui-linux-x64
- os: ubuntu-24.04-arm
target: aarch64-unknown-linux-gnu
target_zig: aarch64-unknown-linux-gnu.2.28
binary: deepseek-tui
artifact_name: deepseek-tui-linux-arm64
- os: macos-latest
@@ -103,14 +107,31 @@ jobs:
- uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- uses: Swatinem/rust-cache@v2
- name: Install Linux system dependencies
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y libdbus-1-dev pkg-config
- run: cargo build --release --locked --target ${{ matrix.target }}
- name: Install zig
if: runner.os == 'Linux'
uses: goto-bus-stop/setup-zig@v2
with:
version: '0.13.0'
- name: Install cargo-zigbuild
if: runner.os == 'Linux'
run: cargo install cargo-zigbuild --locked
- name: Build
shell: bash
run: |
if [ -n "${{ matrix.target_zig }}" ]; then
cargo zigbuild --release --locked --target ${{ matrix.target_zig }}
else
cargo build --release --locked --target ${{ matrix.target }}
fi
- name: Rename binary
shell: bash
run: |
cp target/${{ matrix.target }}/release/${{ matrix.binary }} ${{ matrix.artifact_name }}
TARGET_DIR="${{ matrix.target_zig || matrix.target }}"
cp "target/${TARGET_DIR}/release/${{ matrix.binary }}" ${{ matrix.artifact_name }}
- uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact_name }}