已开启
支持共享数据卷方式启动 #210
支持共享数据卷方式启动 #210
已开启
maoyue0730创建于 6月22日
maoyue0730
maoyue0730成员
6月22日

支持共享数据卷方式启动

likedislike
合并受阻
maoyue0730maoyue0730成员
6月22日 创建了 pull request,commit 26d1dd4b
BoostKit-bot成员
6月22日 评论:

libing-pipeline创建中,请等待……

likedislike
BBoostKit-bot成员
6月22日 添加了label:sig/BoostCPH
BoostKit-bot成员
6月22日 评论:

欢迎来到 BoostKit 社区

Hey @maoyue0730 , 感谢你对社区的贡献.

机器人使用手册

有关指令的使用,可以点击 此处 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。

联系指引

有疑问可以联系 SIG: BoostCPH ,
维护者是: @lianqiye, @maoyue0730, @rebecca-liu66 ,
优秀贡献者是: @lindv, @maoyue0730 .

likedislike
BBoostKit-bot成员
6月22日 添加了label:boostkit-cla/yes
BBoostKit-bot成员
6月22日 添加了label:SC-RUNNING
BoostKit-bot成员
6月22日 评论:

CLA 签署成功

maoyue0730, 感谢您的代码贡献。 所有的代码贡献者都已完成了 CLA 签署。 👍

likedislike
BoostKit-bot成员
6月22日 评论:

Ascend docs pipeline is running...

likedislike
BBoostKit-bot成员
6月22日 添加了label:docs-ci-pipeline-running
BBoostKit-bot成员
6月22日 删除了label:SC-RUNNING
BBoostKit-bot成员
6月22日 添加了label:SC-RUNNING
BoostKit-bot成员
6月22日 评论:

✅ 跳过 docs ci 检查,没有需要检查的文档文件

likedislike
BBoostKit-bot成员
6月22日 删除了label:docs-ci-pipeline-running
BBoostKit-bot成员
6月22日 添加了label:docs-ci-pipeline-success
BBoostKit-bot成员
6月22日 删除了label:SC-RUNNING
BBoostKit-bot成员
6月22日 添加了label:SC-SUCC
atomgit-bot
atomgit-bot
6月22日 评论:

变更摘要

本次 PR 为云手机启动脚本新增"共享数据卷"启动方式的支持:在配置文件 cfct_config 中增加 START_SHARE_DATA 开关,并在 cfct_videocreate_build_prop()container_run() 中分别写入对应的 Android 属性和传递给 base_box.sh 的启动参数。

主要改动

  • cfct_config 新增配置项 START_SHARE_DATA:新增变量 START_SHARE_DATA=0,用于控制启动时是否共享数据盘(1 表示共享,0 表示不共享)。
  • container_run() 传递 --start_share_data 参数:在调用 base_box.sh 启动容器时,新增 --start_share_data "$START_SHARE_DATA" 选项,将配置值传递到底层容器启动逻辑。
  • create_build_prop() 写入 Android 系统属性:当 START_SHARE_DATA 为 1 时,向 build.prop 写入 ro.boot.start_share_data=1,以便容器内 Android 系统读取该标志。

审核结论

  • CloudPhoneService/VideoScripts/cfct_config:已审核,无问题。
  • CloudPhoneService/VideoScripts/cfct_video:已审核,发现 1 个问题(见上方 finding)。
likedislike
atomgit-bot
atomgit-bot
6月22日 评论:

代码审查

审查总结

审查覆盖的文件

文件 审查结果
CloudPhoneService/VideoScripts/cfct_config 无问题 — 新增的 START_SHARE_DATA=0 配置变量符合现有风格,注释清晰
CloudPhoneService/VideoScripts/cfct_video 发现 1 个问题 (P1)

问题统计

  • P0: 0
  • P1: 1
  • P2: 0
  • P3: 0

整体风险评估

中等风险。核心问题是 create_build_prop()ro.boot.start_share_data=1 写入路径缺少 $THISDIR/ 前缀,导致该属性被写入到与脚本所在目录无关的 build.prop 文件中,而实际被容器挂载使用的是 $THISDIR/build.prop。当脚本执行时的当前工作目录与脚本所在目录不一致时,START_SHARE_DATA=1 的共享数据卷功能将静默失效,不会产生任何错误提示。container_run() 第827行的 --start_share_data 参数传递本身是正确的。建议修复路径后验证功能正常。

类型 数量
🔴 阻塞 1
🟡 建议 0

⛔ 需要修改

likedislike
atomgit-bot
atomgit-bot6月22日进行代码检视1
CloudPhoneService/VideoScripts/cfct_video
@@ -616,1 +616,4 @@
616616 echo "ro.hardware.omxsoftdecode=0" >> $THISDIR/build.prop
617+ 
618+ if [ $START_SHARE_DATA -eq 1 ]; then
619+ echo "ro.boot.start_share_data=1" >> build.prop
atomgit-bot
atomgit-bot6月22日评论:

🟠 High Priority

create_build_prop() 函数中,所有其他属性都使用 $THISDIR/build.prop 作为写入路径(第607、609、611、613、615、616行),但第619行新增的 ro.boot.start_share_data=1 写入到了不带 $THISDIR/ 前缀的 build.prop

这导致了两处不一致:

  1. 写入目标文件不同:build.prop(相对于脚本执行时的当前工作目录)vs $THISDIR/build.prop(脚本所在目录);
  2. container_run()(第759-762行)和 container_restart()(第900-903行)在调用 create_build_prop 前会先 rm -rf $THISDIR/build.prop,随后各属性通过 >> 重新创建 $THISDIR/build.prop。但 ro.boot.start_share_data=1 被写入到另一个 build.prop 文件中,不会进入最终被容器挂载使用的 $THISDIR/build.prop

触发器:当脚本执行时的 CWD 与 $THISDIR(脚本所在目录)不同时,ro.boot.start_share_data=1 属性将丢失,共享数据卷功能实际上不会生效。

失败模式:即使 START_SHARE_DATA=1,容器启动时也不会获得 ro.boot.start_share_data=1 的 build property,共享数据卷功能静默失效。

建议:将 build.prop 改为 $THISDIR/build.prop,使其与函数内其他所有属性写入路径保持一致。

改动建议
619
- echo "ro.boot.start_share_data=1" >> build.prop
619
+ echo "ro.boot.start_share_data=1" >> $THISDIR/build.prop
应用建议
likedislike