fix(chv-guest): 浏览器装系统路径(B-22)

Round 7 构建本身成功,但 BUILDINFO.versions.chromium 为空:
virt-customize 的客机 shell 里 HOME=/,Playwright 默认缓存
~/.cache/ms-playwright 落到根目录 /.cache(实测浏览器在
/.cache/ms-playwright/chromium_headless_shell-1248),而
build.sh 读的是 /root/.cache/ms-playwright(不存在),ls 读回
空文件;buildinfo.py 当时不校验 chromium 非空,静默放过,
事后 check_lockfile / generate --verify 兜底报未覆盖(exit 1)。
改:安装与读回都走 PLAYWRIGHT_BROWSERS_PATH=
/usr/local/share/ms-playwright(agent 运行时也须设同一变量,
否则 chv 用户在家目录找不到浏览器);buildinfo.py 加
playwright_browsers_path 字段,并校验 playwright=1 时
versions.chromium 非空;README 同步。
This commit is contained in:
host committed 2026-11-06 10:55:02 +00:00
1 parent 4c8e4eac7b
commit dcb0824f78
3 files changed
+22 -4

No files matched your search

+11 -3
View File
@@ -210,6 +210,14 @@ run qemu-img convert -f qcow2 -O raw "$IMG" "$OUT/disk.raw"
# (git 的 Recommends,agent 任务可能要 ssh 出站)。
# apt-get clean 只清 .deb 缓存、不动 lists(playwright
# --with-deps 稍后还要 apt 装浏览器依赖);lists 在最后一步清。
# B-22:virt-customize 的客机 shell 里 HOME=/,Playwright 默认
# 缓存路径 ~/.cache/ms-playwright 会落到根目录 /.cache(round 7
# 实测:浏览器装在 /.cache/ms-playwright/chromium_headless_shell-1248,
# /root/.cache 根本不存在,ls 读回空文件、BUILDINFO.versions.chromium
# 为空,check_lockfile 兜底报未覆盖)。改走系统路径
# PLAYWRIGHT_BROWSERS_PATH=/usr/local/share/ms-playwright:构建时
# 装这里、读回这里;运行时 agent 也须设同一变量,否则 chv 用户
# 会在自己家目录下找不到浏览器。
# Playwright 默认开启(PLAYWRIGHT=0 可显式关掉),浏览器只装
# chromium-headless-shell(不要完整 Chromium)。单次
# virt-customize:apt 安装、pip、拷入、sshd 加固、git 占位、
@@ -217,7 +225,7 @@ run qemu-img convert -f qcow2 -O raw "$IMG" "$OUT/disk.raw"
# Playwright 装在第一次 freeze 之后、最终 freeze 之前(B-08:
# 最终 freeze 须在 Playwright 安装之后,否则
# BUILDINFO.versions.pip 里没有 playwright;Chromium 版本以
# ms-playwright 缓存目录名记录(如 chromium_headless_shell-1181),
# ms-playwright 缓存目录名记录(如 chromium_headless_shell-1248),
# 写进 /app/guest-versions-chromium.txt)。
GT_INSTALL_CMD="curl -fsSL -o /tmp/gt-install.sh https://gitea.com/gitea/cli/raw/branch/main/scripts/install.sh && echo \"${GT_INSTALL_SH_SHA256} /tmp/gt-install.sh\" | sha256sum -c - && GITEA_CLI_VERSION=${GT_VERSION} GITEA_CLI_INSTALL_DIR=/usr/local/bin sh /tmp/gt-install.sh && rm -f /tmp/gt-install.sh && /usr/local/bin/gt version"
VC_ARGS=(-a "$OUT/disk.raw"
@@ -240,9 +248,9 @@ VC_ARGS=(-a "$OUT/disk.raw"
--run-command 'dpkg-query -W -f "\${Package} \${Version}\n" > /app/guest-versions-dpkg.txt; pip3 freeze > /app/guest-versions-pip.txt || true')
if [ "${PLAYWRIGHT:-1}" = "1" ]; then
VC_ARGS+=(
--run-command '(pip3 install --no-cache-dir --break-system-packages playwright || pip3 install --no-cache-dir playwright) && python3 -m playwright install --with-deps chromium-headless-shell'
--run-command '(pip3 install --no-cache-dir --break-system-packages playwright || pip3 install --no-cache-dir playwright) && PLAYWRIGHT_BROWSERS_PATH=/usr/local/share/ms-playwright python3 -m playwright install --with-deps chromium-headless-shell'
--run-command 'dpkg-query -W -f "\${Package} \${Version}\n" > /app/guest-versions-dpkg.txt; pip3 freeze > /app/guest-versions-pip.txt || true'
--run-command 'ls /root/.cache/ms-playwright/ > /app/guest-versions-chromium.txt 2>/dev/null || true')
--run-command 'ls /usr/local/share/ms-playwright/ > /app/guest-versions-chromium.txt 2>/dev/null || true')
fi
# B-21 收尾:清掉两轮 apt 的缓存与 lists(--with-deps 装完后
# 不再有 apt 活动),把空间还给镜像。