feat(chv-guest): M4 Chromium 单独钉死 + /app 收紧为最小集
- Chromium 钉死:CHROMIUM_HEADLESS_SHELL_REV(纯数字修订号) 设即钉死,buildinfo.py 校验读回的 ms-playwright 缓存目录名 须恰好是该修订号,否则构建失败;generate/check 的 --verify 也复核;未设时只记录、构建输出明说未钉死,BUILDINFO 记 null - /app 最小集:build.sh 不再把整个 $REPO_DIR/cloud/ 拷进客机, 只拷 host.py(只用标准库,不依赖 cloud/);REPO_DIR 预检 不再要求 cloud/ 存在 - generate_lockfile.py 只读 BUILDINFO.versions 一事已在 to10 轨 改写,本棒以合成 BUILDINFO 干跑复核(假版本 9.9.9 进 lockfile, 宿主 git 1:2.43.0 未混入)并补钉死复核;真实 lockfile 产出 仍待 V-9 真机构建,不编造版本号
This commit is contained in:
1 parent
c39715659e
commit
2ad29eeb1f
5 files changed
+99
-21
No files matched your search
+10
-3
@@ -30,10 +30,10 @@
|
||||
| 语言与工具链 | Python 3.12、git、curl、ca-certificates、xz-utils、fontconfig、openssh-client(Node.js 不装:Playwright 驱动是 Python playwright,见 PLAYWRIGHT=1 分支;任务镜像 Dockerfile 里也没有 Node.js,本清单不虚构它) | 构建时钉小版本并记入构建日志;apt 用 --no-install-recommends(B-21:默认装 Recommends 会连带拉入 gcc 全套工具链顶满根分区) |
|
||||
| 文档/图片工具 | 已裁剪:pandoc、poppler-utils、latexmk、texlive-latex-base、python-docx、openpyxl、python-pptx、PyMuPDF、Pillow 不在轻量镜像内 | 全量版曾照抄 `cloud/docker/Dockerfile` 的 apt/pip 清单,轻量版按用户决定砍掉 |
|
||||
| agent 引擎 | codex、codex-code-mode-host、codex-resources/bwrap(成套,约 367M,缺 sibling 直接构建失败) | codex 0.164.0-alpha.9(与生产任务镜像一致);`CODEX_BIN_DIR` 由构建方提供,bin/ 不进仓库 |
|
||||
| 浏览器 | Playwright + chromium-headless-shell(默认装,不要完整 Chromium) | Python playwright 装当时的 headless-shell,版本以 ms-playwright 缓存目录名记入 BUILDINFO.versions.chromium;浏览器在系统路径 /usr/local/share/ms-playwright(B-22:virt-customize 里 HOME=/,默认缓存会落到根目录 /.cache),agent 运行时须设 PLAYWRIGHT_BROWSERS_PATH 指向它 |
|
||||
| 浏览器 | Playwright + chromium-headless-shell(默认装,不要完整 Chromium) | Python playwright 装当时的 headless-shell,版本以 ms-playwright 缓存目录名记入 BUILDINFO.versions.chromium;浏览器在系统路径 /usr/local/share/ms-playwright(B-22:virt-customize 里 HOME=/,默认缓存会落到根目录 /.cache),agent 运行时须设 PLAYWRIGHT_BROWSERS_PATH 指向它;单独钉死见 §3:CHROMIUM_HEADLESS_SHELL_REV 设为纯数字修订号即钉死,未设时只记录、不强制 |
|
||||
| 客机基础 | openssh-server(SSH 通道用)、cloud-init(qemu-guest-agent 已裁剪,CHV 不用它) | sshd 只允许 key 登录,禁止密码登录——build.sh 写入 /etc/ssh/sshd_config.d/99-chv.conf 并经 sshd -t + grep 断言(feat-chv-secfix,M8,此前只是文档声称) |
|
||||
| Gitea 同步 | gt 1.0.0(官方 install.sh + SHA256 校验)、chv-sync(启动时 clone、显式 pull/push 的同步脚本) | 凭证走 seed 盘 /etc/chv/guest-env(0600)投递,不进镜像;见 §7 |
|
||||
| 任务代码 | codex-app-server 仓库代码置于 `/app`(host.py 入口) | 版本见 §3,不挂载宿主代码目录(VM 与宿主无共享路径) |
|
||||
| 任务代码 | 仅 `/app/host.py` 一个文件(host.py 只用标准库,不依赖 cloud/;旧版把整个 cloud/ 拷进 /app/,客内可读全套 server/worker 代码,M4 收尾已收紧为最小集) | 版本见 §3(repo_commit),不挂载宿主代码目录(VM 与宿主无共享路径) |
|
||||
|
||||
中文 LaTeX 说明:与 Docker 镜像同款口径——xelatex + CJK
|
||||
字体会再增数百 MB,本清单不默认包含;需要时单独一版镜像,
|
||||
@@ -60,13 +60,20 @@ chv-guest-<ubuntu 版本>-<codex 版本>-<仓库 commit 短 hash>
|
||||
在 `versions` 里(B-02:dpkg + pip freeze 从客机读回,
|
||||
chromium 以 ms-playwright 缓存目录名记,gt 以 gt_version 记),
|
||||
`generate_lockfile.py` / `check_lockfile.py` 以它为唯一来源。
|
||||
Chromium 单独钉死:构建时设 CHROMIUM_HEADLESS_SHELL_REV
|
||||
为纯数字修订号(如 1248),buildinfo.py 校验读回的缓存
|
||||
目录名须恰好是 `chromium_headless_shell-<rev>`,否则构建
|
||||
失败,BUILDINFO.chromium_pinned_rev 记该值;未设时记 null、
|
||||
只记录不强制,构建输出明说“未钉死”。真实 lockfile 产出
|
||||
须等 V-9 真机构建(本机无 /dev/kvm,版本号绝不编造)。
|
||||
|
||||
## 4. 构建脚本(补缺口轨:已从骨架改成真实步骤)
|
||||
|
||||
见 `build.sh`:参数校验 → 下载 Ubuntu Minimal 云镜像(SHA256
|
||||
必填)→ qemu-img 转 raw(轻量版不扩盘,底座根分区 2.4G 够用;
|
||||
全量版 B-16 的 +12G 扩盘已删除)→ virt-customize 装 §2 清单、
|
||||
拷入 codex 成套二进制与仓库代码到 /app、装 gt 1.0.0、拷入
|
||||
拷入 codex 成套二进制与 host.py(仅此一个文件,不拷 cloud/)
|
||||
到 /app、装 gt 1.0.0、拷入
|
||||
chv-sync 并写 cloud-init 启动钩子、写 host key 不重生成配置 →
|
||||
virt-get-kernel 取内核 → 生成并校验 BUILDINFO.json。
|
||||
`./build.sh --dry-run out/` 只打印命令、不执行、不要求
|
||||
|
||||
Reference in new issue
Block a user