Skip to content
阅读进度

如何理解隔离工作目录与可复现的 CI? ​

返回 构建与质量门禁 目录

标准回答 ​

在同一工作目录反复切换 base 和 head,容易覆盖未提交改动或混入构建产物。Git worktree 可以为不同提交提供独立工作树,共享对象库,同时保留各自检出状态。分析任务应面向精确提交,清理也只针对自己创建的目录。

构建缓存、Gradle 用户目录、报告路径和并发任务仍可能共享资源,因此隔离工作树不等于隔离所有环境。应固定 JDK、Android SDK、Gradle、依赖锁定策略和规则版本,记录变体与实际命令。

CI 报告需要区分代码诊断、工具执行失败和基础设施失败。依赖下载中断、Gradle 配置错误或分析器崩溃,不能被显示为“零问题通过”;同时应避免把临时网络失败伪装成代码风险。

追问与回答 ​

怎样避免本地与 CI 结论不同 ​

先比较工具链、变体、生成源码、依赖和 lint 配置,再重跑同一精确提交。报告附带输入指纹比只附命令更可复现。

可以共享 Gradle 缓存吗 ​

可以在工具支持的并发语义下共享,但应避免共享易被覆盖的任务输出;隔离不能以破坏缓存一致性为代价。

易混淆点 ​

  • 分析命令异常退出后仍生成绿色门禁结果。

参考资料 ​

内容来源 ​

用完整回答理解机制,用真实证据解释项目。