跳转至

开发与验证

文档首页 · 架构与设计 · 发行版支持

本地检查

cargo fmt --all -- --check
cargo clippy --all-targets --locked -- -D warnings
cargo test --all-targets --locked
cargo build --release --locked

产品运行时代码和 IBus 配置菜单均使用 Rust,不依赖 GUI 工具包或 Python。

.deb 打包

cargo install cargo-deb --version 3.7.0 --locked
cargo build --release --locked
cargo deb --no-build

打包资源和安装路径定义在 Cargo.tomlpackage.metadata.deb 中。

.deb 的 IBus 依赖下限是 1.5.22。CI 在每个 Ubuntu 和 Debian 版本的 amd64 与 arm64 用户空间内分别原生构建,不使用高版本 glibc 构建的单一二进制冒充老版本兼容包。 Debian CI 和发布资产同时使用版本号及官方代号:11 Bullseye、12 Bookworm、13 Trixie。

.rpm 打包

./packaging/build-rpm.sh

packaging/typeless-ibus.spec 描述 RPM 元数据、依赖和 安装路径。构建脚本会检查 spec 与 Cargo.toml 版本一致,生成包含 vendored Cargo 依赖的 源码包,然后调用 rpmbuild -ba。RPM 内部使用 cargo --offline --locked 构建和测试, 输出二进制 RPM 与可重建的 SRPM。

RPM 同样声明 IBus 1.5.22 下限。Fedora 43、Fedora 44 和 openSUSE Tumbleweed 各自在 x86_64 与 aarch64 原生容器中构建,因此发布产物按发行版和架构区分,不提供一个跨 RPM 发行版通用的二进制包。SRPM 与 CPU 架构无关,Release 对每个发行版只保留一份。

Nix

nix flake check
nix build .#packages.x86_64-linux.default

Flake 同时暴露 packages.x86_64-linux.defaultpackages.aarch64-linux.default,CI 会在 x86_64 和 aarch64 GitHub runner 上分别原生构建。

GitHub Actions

CI 的基础 Rust 检查在 Ubuntu 24.04 runner 上执行,发行版兼容性由独立矩阵覆盖:

  • Rust 格式检查
  • Clippy(警告视为错误)
  • 单元测试
  • release 构建
  • Ubuntu 20.04、22.04、24.04、26.04 和 Debian 11 Bullseye、12 Bookworm、13 Trixie 的 amd64/arm64 原生 .deb 打包
  • 上述 14 个发行版/架构组合的 IBus Factory、CreateEngineProcessKeyEvent 测试
  • Fedora 43/44 和 openSUSE Tumbleweed 的 x86_64/aarch64 原生 RPM/SRPM 构建、安装、 IBus 协议与卸载测试
  • Arch Linux 的相同 IBus 协议测试
  • x86_64-linux 和 aarch64-linux Nix 构建

推送 v<版本> 标签时,标签必须和 Cargo.toml 版本一致。CI 会创建对应的 GitHub Release,并附加 14 个 DEB、6 个二进制 RPM 和每个 RPM 发行版一份 SRPM;普通 main 推送只保留为 Actions artifacts,不自动发布版本。

真实 ASR 可用性测试是独立的非阻塞 job。上游拒绝 GitHub runner 网络时,它会产生 告警并保留 Log ID,但不会阻断 Rust 检查或 .deb 打包。

ASR 固定音频

tests/fixtures/asr-availability.pcm 是 16 kHz、 单声道、16-bit little-endian PCM 普通话样本,由 macOS say 合成后转换并提交到仓库。 详细格式见 tests/fixtures/README.md

返回文档索引