-
Notifications
You must be signed in to change notification settings - Fork 2
CI Pipelines
AceGuru-mjh edited this page Oct 1, 2026
·
4 revisions
📑 本页目录
四条 workflow,全部在
.github/workflows/。核心思路:没有 Android SDK 也能快速验证内核(静态分析 job), 重型 job 才装 SDK。
| 工作流 | 触发 | 主要工作 |
|---|---|---|
| ci.yml | push / PR → main、feat/**;workflow_dispatch;同并发组自动取消旧的 |
① static-analysis ② app-compile(60min)③ build-apk(45min) |
| apk.yml |
workflow_dispatch(可选 build_type)+ push 到分支/tag |
发布向 APK;tag 构建自动创建 Release |
| quality-gate.yml | push / PR | 结构质量门禁:文件预算 + 反模式 + 源码清单 |
| pr-labeler.yml | PR | 按改动路径自动打 area/* 与 risk/* 标签 |
| 步骤 | 做什么 |
|---|---|
| kotlinc 编译 core 四模块 | 用纯 kotlinc 类型检查 :core:logging :core:llm-adapter :core:tool-registry :core:agent-engine —— 这正是"core 不许依赖 Android"换来的红利 |
| 工具 ID 唯一性检查 | 扫描注册的工具 id,撞 id 直接红 |
| 重复类检查 | 同名类重复定义(历史 bug:MCP 三工具被注册三次) |
| Check bracket balance (lexer-aware) |
scripts/kotlin_balance.py:剥离注释/raw 串/字符串模板后再计数,避免误报 |
| 预编译 PRoot 二进制 sha256 校验(P71) | 保证随包分发的 libproot*.so 指纹与清单一致 |
配置预装 Android SDK → 生成 Gradle wrapper → 依赖预热(重试 JitPack)
→ :app:compileDebugKotlin
→ app 单测
→ 安装 proot 5.4(Debian)
→ :platform:terminal 单测(含真 rootfs E2E)
→ 编译仪器测试
→ :core:agent-engine / :core:tool-registry / :platform:cs-mem 单测
Stage bundled Ubuntu rootfs(scripts/fetch_rootfs.sh)
→ :app:assembleDebug
→ 上传工件 app-debug-apk
→ APK 体积报告 + PR 评论(把体积变化写回 PR)
Note
每次 CI 都产出 debug APK 工件(保留 14 天),不想自己搭环境的人可以直接下载 —— 见 快速开始。
- 支持
workflow_dispatch传build_type; - 支持 push 到分支 / tag:tag 构建额外创建 GitHub Release(含带版本 + commit sha 的重命名产物);
- 推荐使用
-PapexAbi=arm64-v8a的单 ABI 路线产出"纯净包"; - 历史坑:双 APK 中间产物如果留在
packageRelease输出目录,Gradle 会把它们当 stale output 清理 (v1.2.0 首次 tag 构建踩到),因此中间产物已移出该目录。
两个 job:
| job | 内容 |
|---|---|
structural-quality |
文件预算(scripts/check_file_size.sh,main ≤1200 / test ≤1600)+ 反模式(scripts/check_code_quality.sh)+ 把 Kotlin 源码清单写进 Job Summary |
workflow-metadata |
工作流自身的元数据校验 |
actions/labeler@v5 + .github/labeler.yml:按 PR 改动路径自动打 area/*(模块)与 risk/*(风险)标签,
方便 Reviewers 按领域分诊。
# 静态分析(core 的类型检查四模块)—— 无需 Android SDK
scripts/compile_terminal_jvm.sh # JVM 侧类型检查示例(terminal 相关)
# 结构门禁
scripts/check_file_size.sh
scripts/check_code_quality.sh
python scripts/kotlin_balance.py # 词法感知括号平衡
# rootfs 指纹校验(CI 快速路径)
scripts/fetch_rootfs.sh --check
# 全量单测见「测试体系」页- 不跑 ComposeFoundry(独立工程,不参与主构建);
-
不跑真机 UI 测试(无设备/模拟器 runner 的 job);真机仪器测试要本地连
设备跑
:platform:terminal:connectedDebugAndroidTest; - 不锁 wrapper:每个 job 都自己生成。
- 质量门禁 · 仓库脚本 · 测试体系
- 从源码构建 · Contributing(CI 全绿是硬门禁)
-
MCP 生态总览
新 - (沙箱 MCP · 官方 Hub · 逆向 Host · 门控语义)
- 终端运行时
- 终端 API 契约
- SDK 边界
- Termux 能力矩阵
- Ubuntu rootfs 供给
- Ubuntu 生命周期
- PRoot 二进制溯源
- VT100/ANSI 模拟器
- 终端性能
- 终端迁移
- 原生层 C++/JNI