test: add containerized real-codex E2E (docker) (#686) - #697
Conversation
Wraps the existing tests/e2e real-codex suite in a reproducible Docker image so the full model round-trip + compression lifecycle runs with no host dependencies (node 22 + built bili dist + codex baked into the image). Follows the containerized-e2e pattern from billion-context-dsh#128. - scripts/e2e-docker/Dockerfile: node:22-slim + npm ci + build + codex - scripts/e2e-docker/run.sh: build image, run suite in-container, forward E2E_* creds, mount a persistent log dir (tmp/docker-e2e) - .dockerignore: keep host node_modules/dist out of the build context - .github/workflows/ci-e2e-docker.yml: manual-dispatch job mirroring ci-e2e - npm scripts: e2e:docker / e2e:docker:preflight Refs #686
📦 Built Package ArtifactBranch: Option A — Install from npm PR tag (recommended)npm install -g billion-context@pr-697Each push to this PR publishes a new version under the Option B — Download artifact
tar xzf billion-context-pr697.tgz
npm install -g packageThis comment is automatically updated on each push. |
[bot] 🏷 Reviewed PR #697 (containerized real-codex E2E). Verdict at the bottom. Duplicate screening — no exact duplicate. Related items:
What I verified (evidence-backed):
Minor findings (none blocking):
Verdict: No blocking issues; diff is clean and the containerization logic checks out against the actual test mechanics. As you noted, docker isn't available in this sandbox, so the image build + first in-container run still need to happen on a docker host or via the 中文摘要:审查了容器化真实 codex e2e(#697)——diff 干净、版本未动;逐条核对了 |
|
评估测试有效性 而不是形式 |
[bot] 🏷 重新按「测试有效性」评估(不看形式)。读完全部断言逻辑( 它真正证明了什么(有效信号)
有效性偏弱 / 被高估的地方(核心问题)
让它更有效(建议,按性价比排序)
底线作为 proxy 模式下 codex/OpenAI-Responses 全生命周期的冒烟+集成门禁,它是有效的(尤其那几条读 bili 日志的硬断言)。但作为通用回归门禁不够:覆盖窄、保真度靠模型、最高价值阶段默认关。而本 PR(docker 化)本身的增量主要是运行环境可复现性,不是新的测试信号——建议把它定位成「把已有真 e2e 搬进可复现容器 + 验证 codex-in-node:22-slim」,并按上面第 1、2 条把它从「好看」变成「真的能拦住回归」。我未合并(合并仅人工)。 中文一句话:按有效性而非形式重评——底层套件对 proxy 模式 codex 全链路确实有效(多条读 bili 日志的模型无关硬断言 + 唯一一处保真度检查),但保真度断言依赖模型召回、覆盖仅限 OpenAI/Responses×proxy×codex、forge 默认关闭;而本 PR 的 docker 化几乎不新增行为信号,主要是运行环境可复现性,建议补「模型无关的摘要内容断言」并把 CI 默认开 forge 才算真门禁。 |
What
Containerized real end-to-end for codex, per the ask in #686 (“需要真的端到端…docker 起 codex 的那种”). It wraps the existing
tests/e2e/e2e-codex.test.tssuite -- realcodexCLI → bili proxy → real Responses upstream → full warmup / load-growth / ACP-compress / purity(/forge) lifecycle -- inside a reproducible Docker image, following the containerized-e2e pattern from Tyan66666/billion-context-dsh#128.This is "real" in the sense #686 wants: actual model round-trips and compression through the proxy, not just the headless
mcp listconfig check from PR #688. The two are complementary (#688 = Windows MCP-registration layer; this = full lifecycle in an isolated container).Files
scripts/e2e-docker/Dockerfile--node:22-slim+npm ci+npm run build+@openai/codex; runtime baked into the image, host needs no node/codex.scripts/e2e-docker/run.sh-- host orchestrator: build image → run the suite in-container, forwardingE2E_UPSTREAM_URL/KEY/MODEL/FORGE/TMO/CODEX_BIN, mountingtmp/docker-e2efor persistent logs..dockerignore-- keeps hostnode_modules/distout of the build context..github/workflows/ci-e2e-docker.yml--workflow_dispatchjob mirroringci-e2e.yml(secrets-backed upstream); runs preflight then full.package.json--npm run e2e:docker/e2e:docker:preflight.Local usage
Validation done here (Linux sandbox)
bash -n scripts/e2e-docker/run.shclean; workflow YAML parses;package.jsonvalid JSON, version untouched.process.cwd()/tmp(tests/e2e/e2e-codex.test.ts:18), so the-v <log>:/app/tmpmount captures logs exactly where CI uploads them.workflow_dispatchjob. That is why the CI job is manual-dispatch (zero risk to other PRs until triggered).Review note
Reuses the proven host e2e unchanged -- the only new surface is "does
@openai/codexinstall & run insidenode:22-slim" plus container→upstream networking (documented inrun.sh). Suggest oneworkflow_dispatchrun to confirm before treating it as a standing gate.Refs #686
中文摘要:按你"要真·端到端、用 docker 起 codex"的要求,把现有真实 codex e2e 套件封装成可复现的 Docker 镜像(node:22-slim + bili dist + codex),照 billion-context-dsh#128 的容器化模式做了
run.sh编排 + 手动触发的 CI job +npm run e2e:docker;本机已验证脚本/YAML/JSON 语法与日志挂载路径,但本沙箱没有 docker,无法实际构建/运行容器,需在有 docker 的主机或 dispatch job 上跑首次确认。