构建与发布
发布流程以「固定输入 + 候选 Release + 人工复测」三件事为核心,不靠手工改文件。
固定输入
核心与 Doona 的完整提交、Doona 的 OpenWrt 补丁摘要、OpenWrt 25.12.4 x86/64 官方 SDK 地址和 SHA256,都固定在 ci/pins.env。Doona 从源码构建并保留 OpenWrt 同源 API 补丁;归档不含可选中文字体,浏览器用系统字体。
自动跟随上游
auto-bump.yml 每 6 小时检查官方 main 与 Doona 更新:
- 在独立分支写入新的 pin、包版本和归档哈希
- 构建核心、Doona 和全部 7 组 SDK 安装包
- 只产出候选 Release,不碰
main和正式软件源 - 真机复测通过后,用
auto_publish原子推进:main、正式 tag、Release 与 R2 软件源一起更新
本地构建
完整构建(含核心)要在大小写敏感的 Linux 文件系统上跑 —— Doona 上游有仅大小写不同的文件。
依赖:Rust / rustup、Zig 0.14.1、Node.js 22.13+ 与 Corepack、Git、curl、ripgrep、GNU tar、zstd、readelf,以及 build-essential、clang、LLVM、libbpf、libelf、pkg-config、CMake、libclang 和 OpenWrt SDK 所需工具。核心交叉编译脚本会核对 Rust / Doona / SDK 输入与 Zig、bpf-linker 版本;SDK 阶段限定 Linux x86_64。
bash scripts/check.sh
ci/build-doona.sh
ci/build-core.sh
源码归档写入被 Git 忽略的 artifacts/cache/。7 组 SDK 安装包(7 架构 × SDK 25.12)由 release.yml 构建,它从本次运行独立的源码资产 tag 下载带 SHA256 的阶段文件,任一散列不匹配或安装包缺失都会使构建失败。
仓库脚本
| 脚本 | 作用 |
|---|---|
scripts/install.sh | 一键安装:查内核、下包、校验、补依赖与 BTF |
scripts/uninstall.sh | 停服务、删包 |
scripts/check.sh | 提交前自检 |
scripts/verify-source-assets.sh | 校验源码资产与散列 |
scripts/update-honk-version.sh | 同步包版本号 |
来源记录
核心提交、Doona 提交、补丁摘要及实际阶段归档散列,都记录在构建生成的 provenance 文件里。安装后随包安装到 /usr/share/licenses/。
维护这个文档站
内容在 docs/site/content/,每页只写正文片段,页头侧栏由构建脚本统一生成。
python3 docs/site/build.py # 生成到 .build/docs-site
python3 docs/site/build.py --check # 自检:锚点重复、死链、导航漏页
python3 -m http.server 4173 --directory .build/docs-site
新增一页:加 HTML、在 site.json 导航登记、h2/h3 都带 id。推送后由 .github/workflows/docs.yml 校验并发布到 GitHub Pages。