Skip to content

CI Pipelines

AceGuru-mjh edited this page Oct 1, 2026 · 4 revisions

CI 流水线

🛠️ 工程化 · 🏠 首页 › CI-Pipelines

Home Version Kotlin Modules Tools License

CI-Pipelines

📑 本页目录

四条 workflow,全部在 .github/workflows/。核心思路:没有 Android SDK 也能快速验证内核(静态分析 job), 重型 job 才装 SDK。

1. 总览

工作流 触发 主要工作
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/* 标签

2. ci.yml 三个 Job

2.1 static-analysis(无 Android SDK)

步骤 做什么
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 指纹与清单一致

2.2 app-compile(60 分钟)

配置预装 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 单测

2.3 build-apk(45 分钟)

Stage bundled Ubuntu rootfs(scripts/fetch_rootfs.sh)
  → :app:assembleDebug
  → 上传工件 app-debug-apk
  → APK 体积报告 + PR 评论(把体积变化写回 PR)

Note

每次 CI 都产出 debug APK 工件(保留 14 天),不想自己搭环境的人可以直接下载 —— 见 快速开始。

3. apk.yml(发布)

  • 支持 workflow_dispatch 传 build_type;
  • 支持 push 到分支 / tag:tag 构建额外创建 GitHub Release(含带版本 + commit sha 的重命名产物);
  • 推荐使用 -PapexAbi=arm64-v8a 的单 ABI 路线产出"纯净包";
  • 历史坑:双 APK 中间产物如果留在 packageRelease 输出目录,Gradle 会把它们当 stale output 清理 (v1.2.0 首次 tag 构建踩到),因此中间产物已移出该目录。

4. quality-gate.yml

两个 job:

job 内容
structural-quality 文件预算(scripts/check_file_size.sh,main ≤1200 / test ≤1600)+ 反模式(scripts/check_code_quality.sh)+ 把 Kotlin 源码清单写进 Job Summary
workflow-metadata 工作流自身的元数据校验

5. pr-labeler.yml

actions/labeler@v5 + .github/labeler.yml:按 PR 改动路径自动打 area/*(模块)与 risk/*(风险)标签, 方便 Reviewers 按领域分诊。

6. 本地复现 CI 的最快路径

# 静态分析(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

# 全量单测见「测试体系」页

详见 质量门禁 与 仓库脚本。

7. CI 不保证什么

  • 不跑 ComposeFoundry(独立工程,不参与主构建);
  • 不跑真机 UI 测试(无设备/模拟器 runner 的 job);真机仪器测试要本地连 设备跑 :platform:terminal:connectedDebugAndroidTest;
  • 不锁 wrapper:每个 job 都自己生成。

8. 相关页面

footer

🏠 返回首页 · 📚 文档索引 · ❓ FAQ · 🔧 故障排查 · 🗺️ 路线图 · 🐛 提 Issue

Android Guru Agent · v1.4.4 · Kotlin 2.0.21 · Compose · PRoot · Room

Clone this wiki locally