Repository navigation
ci: 复用构建缓存并避免 master 合并后重复运行 CI - #34
Conversation
审查者指南本 PR 调整 GitHub Actions 触发范围,避免 master 合并后的重复 CI;通过共用的 configure-only 脚本生成 HuxerUI Android 依赖图,并为 C++ 与 Gradle 构建启用可写、可复用缓存,同时保持应用和 APK 版本行为不变。 文件级变更
提示与命令与 Sourcery 交互
自定义使用体验访问你的控制面板:
获取帮助Original review guide in EnglishReviewer's Guide本 PR 调整 GitHub Actions 触发范围,避免 master 合并后的重复 CI;通过共用的 configure-only 脚本生成 HuxerUI Android 依赖图,并为 C++ 与 Gradle 构建启用可写、可复用缓存,同时保持应用和 APK 版本行为不变。 File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
嘿——我已经审阅了你的更改,整体看起来很棒!
Sourcery 评估
需要人工审阅。 如果工作流或构建缓存的更改存在问题,合并到 master 时可能会跳过预期的 CI 检查,或者构建可能会使用不正确的缓存/生成结果。回滚可以恢复之前的工作流行为,任何受影响的缓存也可以清除或重新构建,因此后果是有限且可修复的。
Original comment in English
Hey - I've reviewed your changes and they look great!
Sourcery assessment
Needs a human reviewer. If the workflow or build-cache changes are wrong, master merges may skip the intended CI check or a build may use an incorrect cached/generated result. Reverting restores the previous workflow behavior, and any affected caches can be cleared or rebuilt, so the consequences are bounded and repairable.
Summary
合并版本更新到受保护的
master时,同一个变更已在dev通过 CI,却又同时启动完整 CI 和 Release。Android CI 与 Release 还把“生成 HuxerUI 依赖图”交给huxerui build android --profile debug;该命令会先完整构建 Debug APK,再由工作流运行 Gradle。上次devCI 中,这一步耗时约 4 分 46 秒;CI 后续的 Debug 构建多数任务已是 up-to-date,但 Release 仍会额外构建一次 Debug 变体。本 PR 让自动 CI 只监听
dev,master保留按版本文件变化触发的 Release;用共用脚本执行 HuxerUI 的仅生成依赖图 CMake 配置,再由各工作流只构建其需要的 Android 变体。原生测试使用 ccache;Gradle 的现有setup-gradle缓存允许dev写入,并让 CI 与 Release 的 Gradle 命令启用构建缓存。User-visible behavior
应用界面和 APK 版本不变。合入后的工作流行为:
dev:运行 C++ 测试和 Android lint/Debug APK;后续提交可复用 ccache 与 Gradle 缓存。master:不再重复运行完整 CI;若合并包含platform/android/app/build.gradle的版本变更,仍按原条件运行签名 Release。GitHub Actions 缓存有分支作用域:
master的缓存可供dev读取,dev写入的缓存不能直接由master读取。因此这里让两个长期分支各自维护可复用的缓存,而不依赖无法命中的跨分支缓存。Screenshots or recordings
仅修改工作流与构建脚本,没有界面变化;不适用。
Validation
-j8:本次远端devCI 已通过。devCI 已通过。:app:lintDebug均成功。:app:assembleDebug --build-cache均成功;远端构建有 4 个任务命中缓存,并上传 Debug APK。Commands and environment used:
两份 workflow 已用 YAML 解析核对:CI 只监听
dev,Release 只监听master的版本文件变更,两边都调用共用依赖图脚本。本次远端devCI 的 C++ 与 Android 作业均通过。首次运行写入了ccache-gcc16.2-Linux-...与 Gradle 的缓存条目;C++ 449 次可缓存编译调用中有 161 次命中。此 PR 不更改版本文件,因此单独合入不会触发一次新发布;1.3.1 Release 已成功完成。Design and safety checklist
ifchain. 两个工作流共用一份依赖图脚本。CLA — required
CLA Signature: @LangLang03