From 6788aa1943ab9e19188783c398891ceb180149de Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 22 May 2026 18:08:38 +0100 Subject: [PATCH] fix(docker): seed prod store before offline prune --- Dockerfile | 6 +++--- scripts/list-prod-store-packages.mjs | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 scripts/list-prod-store-packages.mjs diff --git a/Dockerfile b/Dockerfile index 4bb4d1073c36..bfcdb7603aaa 100644 --- a/Dockerfile +++ b/Dockerfile @@ -121,10 +121,10 @@ RUN pnpm_config_verify_deps_before_run=false pnpm qa:lab:build FROM build AS runtime-assets ARG OPENCLAW_EXTENSIONS ARG OPENCLAW_BUNDLED_PLUGIN_DIR -# BuildKit cache mounts are not part of cached layers; seed prune-only -# tarballs in the same step that runs offline prune. +# BuildKit cache mounts are not part of cached layers; seed tarballs for the +# installed prod graph in the same step that runs offline prune. RUN --mount=type=cache,id=openclaw-pnpm-store,target=/root/.local/share/pnpm/store,sharing=locked \ - pnpm store add source-map@0.6.1 && \ + pnpm list --prod --depth Infinity --json | node scripts/list-prod-store-packages.mjs | xargs -r pnpm store add && \ CI=true pnpm prune --prod \ --config.offline=true \ --config.supportedArchitectures.os=linux \ diff --git a/scripts/list-prod-store-packages.mjs b/scripts/list-prod-store-packages.mjs new file mode 100644 index 000000000000..6d693e25c2c7 --- /dev/null +++ b/scripts/list-prod-store-packages.mjs @@ -0,0 +1,20 @@ +import fs from "node:fs"; + +const roots = JSON.parse(fs.readFileSync(0, "utf8")); +const specs = new Set(); + +function visit(node) { + for (const dep of Object.values(node.dependencies ?? {})) { + const name = dep.from || dep.name; + if (name && dep.version && dep.resolved?.startsWith("https://registry.npmjs.org/")) { + specs.add(`${name}@${dep.version}`); + } + visit(dep); + } +} + +for (const root of roots) { + visit(root); +} + +process.stdout.write([...specs].sort().join("\n"));